summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2011-03-14 18:35:17 (GMT)
committerRemko Tronçon <git@el-tramo.be>2011-03-14 18:35:17 (GMT)
commita135c6ff4dcded5661a2321512960b14cf8c15c8 (patch)
treeb0017ecfe702304f592b9d4e8b943784cff26fb2 /3rdParty
parent02d6188ab335e6c62b8341b84579d9549d215118 (diff)
downloadswift-a135c6ff4dcded5661a2321512960b14cf8c15c8.zip
swift-a135c6ff4dcded5661a2321512960b14cf8c15c8.tar.bz2
Updated Boost to 1.46.1.
This should hopefuily fix a hang on shutdown on Mac OS X. Resolves: #782 Release-Notes: Fixed a potential hang on shutdown on Mac OS X.
Diffstat (limited to '3rdParty')
-rw-r--r--3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp40
-rw-r--r--3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp46
-rw-r--r--3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp2
-rw-r--r--3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp12
-rw-r--r--3rdParty/Boost/src/boost/archive/archive_exception.hpp97
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/abi_prefix.hpp20
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/abi_suffix.hpp19
-rw-r--r--3rdParty/Boost/src/boost/archive/detail/decl.hpp79
-rw-r--r--3rdParty/Boost/src/boost/array.hpp69
-rw-r--r--3rdParty/Boost/src/boost/asio.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_io_object.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_serial_port.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_socket.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_streambuf.hpp4
-rw-r--r--3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffer.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffered_stream.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/buffers_iterator.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/completion_condition.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/deadline_timer.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/call_stack.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/config.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp4
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp4
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/event.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/hash_map.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp4
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp26
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp4
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/io_control.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/mutex.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/null_event.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/null_thread.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/object_pool.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/op_queue.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/operation.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/pop_options.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/posix_event.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/push_options.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp6
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/service_registry.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/signal_init.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/socket_option.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/socket_types.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/strand_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/thread.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/throw_error.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/timer_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_event.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_thread.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/error.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/error.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/io_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/io_service.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/read.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/read_at.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/read_until.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/write.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/impl/write_at.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/io_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/address.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/address_v4.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/address_v6.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/host_name.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/icmp.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/address.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/address.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp4
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/multicast.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/tcp.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/udp.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/unicast.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/ip/v6_only.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/is_read_buffered.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/is_write_buffered.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/local/connect_pair.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp2
-rw-r--r--3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/placeholders.hpp4
-rw-r--r--3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/raw_socket_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/read.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/read_at.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/read_until.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/serial_port.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/serial_port_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/serial_port_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/socket_base.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/strand.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/stream_socket_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/streambuf.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/time_traits.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/version.hpp4
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/write.hpp2
-rw-r--r--3rdParty/Boost/src/boost/asio/write_at.hpp2
-rw-r--r--3rdParty/Boost/src/boost/assert.hpp89
-rw-r--r--3rdParty/Boost/src/boost/concept_check.hpp166
-rw-r--r--3rdParty/Boost/src/boost/config/auto_link.hpp3
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/clang.hpp53
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/common_edg.hpp6
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/gcc.hpp13
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/intel.hpp40
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/nvcc.hpp75
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/pathscale.hpp82
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/vacpp.hpp47
-rw-r--r--3rdParty/Boost/src/boost/config/compiler/visualc.hpp11
-rw-r--r--3rdParty/Boost/src/boost/config/platform/cygwin.hpp3
-rw-r--r--3rdParty/Boost/src/boost/config/platform/win32.hpp6
-rw-r--r--3rdParty/Boost/src/boost/config/select_compiler_config.hpp44
-rw-r--r--3rdParty/Boost/src/boost/config/select_stdlib_config.hpp4
-rw-r--r--3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp2
-rw-r--r--3rdParty/Boost/src/boost/config/stdlib/libcpp.hpp34
-rw-r--r--3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp13
-rw-r--r--3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp6
-rw-r--r--3rdParty/Boost/src/boost/config/stdlib/sgi.hpp11
-rw-r--r--3rdParty/Boost/src/boost/config/stdlib/stlport.hpp10
-rw-r--r--3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp10
-rw-r--r--3rdParty/Boost/src/boost/config/suffix.hpp23
-rw-r--r--3rdParty/Boost/src/boost/detail/bitmask.hpp47
-rw-r--r--3rdParty/Boost/src/boost/detail/container_fwd.hpp6
-rw-r--r--3rdParty/Boost/src/boost/detail/endian.hpp6
-rw-r--r--3rdParty/Boost/src/boost/exception/diagnostic_information.hpp2
-rw-r--r--3rdParty/Boost/src/boost/filesystem.hpp5
-rw-r--r--3rdParty/Boost/src/boost/filesystem/config.hpp5
-rw-r--r--3rdParty/Boost/src/boost/filesystem/exception.hpp5
-rw-r--r--3rdParty/Boost/src/boost/filesystem/fstream.hpp5
-rw-r--r--3rdParty/Boost/src/boost/filesystem/operations.hpp5
-rw-r--r--3rdParty/Boost/src/boost/filesystem/path.hpp5
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v2/config.hpp10
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp11
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp1
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v2/operations.hpp57
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v2/path.hpp9
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp3
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v3/operations.hpp103
-rw-r--r--3rdParty/Boost/src/boost/filesystem/v3/path.hpp3
-rw-r--r--3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp4
-rw-r--r--3rdParty/Boost/src/boost/functional/hash/hash.hpp23
-rw-r--r--3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp4
-rw-r--r--3rdParty/Boost/src/boost/iterator/iterator_facade.hpp26
-rw-r--r--3rdParty/Boost/src/boost/mpl/aux_/config/operators.hpp33
-rw-r--r--3rdParty/Boost/src/boost/mpl/aux_/has_key_impl.hpp34
-rw-r--r--3rdParty/Boost/src/boost/mpl/aux_/overload_names.hpp48
-rw-r--r--3rdParty/Boost/src/boost/mpl/aux_/ptr_to_ref.hpp46
-rw-r--r--3rdParty/Boost/src/boost/mpl/aux_/reverse_iter_fold_impl.hpp43
-rw-r--r--3rdParty/Boost/src/boost/mpl/base.hpp35
-rw-r--r--3rdParty/Boost/src/boost/mpl/comparison.hpp24
-rw-r--r--3rdParty/Boost/src/boost/mpl/erase_fwd.hpp24
-rw-r--r--3rdParty/Boost/src/boost/mpl/erase_key_fwd.hpp24
-rw-r--r--3rdParty/Boost/src/boost/mpl/greater.hpp21
-rw-r--r--3rdParty/Boost/src/boost/mpl/greater_equal.hpp21
-rw-r--r--3rdParty/Boost/src/boost/mpl/has_key.hpp41
-rw-r--r--3rdParty/Boost/src/boost/mpl/has_key_fwd.hpp25
-rw-r--r--3rdParty/Boost/src/boost/mpl/insert_fwd.hpp24
-rw-r--r--3rdParty/Boost/src/boost/mpl/key_type_fwd.hpp25
-rw-r--r--3rdParty/Boost/src/boost/mpl/less_equal.hpp21
-rw-r--r--3rdParty/Boost/src/boost/mpl/not_equal_to.hpp21
-rw-r--r--3rdParty/Boost/src/boost/mpl/reverse_iter_fold.hpp56
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/at_impl.hpp40
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/begin_end_impl.hpp43
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/clear_impl.hpp35
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/empty_impl.hpp34
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/erase_impl.hpp41
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/erase_key_impl.hpp53
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/has_key_impl.hpp60
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/insert_impl.hpp65
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/item.hpp80
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/iterator.hpp98
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/key_type_impl.hpp34
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/set0.hpp69
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/size_impl.hpp33
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/tag.hpp24
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/aux_/value_type_impl.hpp34
-rw-r--r--3rdParty/Boost/src/boost/mpl/set/set0.hpp35
-rw-r--r--3rdParty/Boost/src/boost/mpl/value_type_fwd.hpp25
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/access_specifier.hpp55
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/adl_swap.hpp44
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/archive_constructed.hpp79
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/auto_space.hpp95
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/base_type.hpp87
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/bidir_node_iterator.hpp113
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/converter.hpp52
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/copy_map.hpp140
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/duplicates_iterator.hpp120
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/has_tag.hpp42
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/header_holder.hpp50
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/index_base.hpp185
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/index_loader.hpp138
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/index_matcher.hpp248
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/index_node_base.hpp135
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/index_saver.hpp135
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/invariant_assert.hpp21
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/is_index_list.hpp40
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/iter_adaptor.hpp325
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/modify_key_adaptor.hpp49
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/msvc_index_specifier.hpp69
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/no_duplicate_tags.hpp97
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/node_type.hpp79
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/ord_index_args.hpp83
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/ord_index_node.hpp650
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/ord_index_ops.hpp147
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/prevent_eti.hpp60
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/safe_ctr_proxy.hpp105
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/safe_mode.hpp574
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/scope_guard.hpp277
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/seq_index_node.hpp223
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/seq_index_ops.hpp200
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/serialization_version.hpp75
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/uintptr_type.hpp76
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/unbounded.hpp83
-rw-r--r--3rdParty/Boost/src/boost/multi_index/detail/value_compare.hpp53
-rw-r--r--3rdParty/Boost/src/boost/multi_index/identity.hpp147
-rw-r--r--3rdParty/Boost/src/boost/multi_index/identity_fwd.hpp26
-rw-r--r--3rdParty/Boost/src/boost/multi_index/indexed_by.hpp72
-rw-r--r--3rdParty/Boost/src/boost/multi_index/member.hpp269
-rw-r--r--3rdParty/Boost/src/boost/multi_index/ordered_index.hpp1390
-rw-r--r--3rdParty/Boost/src/boost/multi_index/ordered_index_fwd.hpp124
-rw-r--r--3rdParty/Boost/src/boost/multi_index/safe_mode_errors.hpp48
-rw-r--r--3rdParty/Boost/src/boost/multi_index/sequenced_index.hpp922
-rw-r--r--3rdParty/Boost/src/boost/multi_index/sequenced_index_fwd.hpp91
-rw-r--r--3rdParty/Boost/src/boost/multi_index/tag.hpp92
-rw-r--r--3rdParty/Boost/src/boost/multi_index_container.hpp1143
-rw-r--r--3rdParty/Boost/src/boost/multi_index_container_fwd.hpp121
-rw-r--r--3rdParty/Boost/src/boost/optional/optional.hpp225
-rw-r--r--3rdParty/Boost/src/boost/optional/optional_io.hpp84
-rw-r--r--3rdParty/Boost/src/boost/preprocessor/punctuation/paren.hpp23
-rw-r--r--3rdParty/Boost/src/boost/program_options/detail/parsers.hpp6
-rw-r--r--3rdParty/Boost/src/boost/program_options/parsers.hpp4
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/exception_implementation.hpp83
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/file_parser_error.hpp88
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/ptree_implementation.hpp905
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/ptree_utils.hpp106
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/rapidxml.hpp2582
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/xml_parser_error.hpp33
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/xml_parser_flags.hpp31
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp144
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/xml_parser_utils.hpp136
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/xml_parser_write.hpp194
-rw-r--r--3rdParty/Boost/src/boost/property_tree/detail/xml_parser_writer_settings.hpp62
-rw-r--r--3rdParty/Boost/src/boost/property_tree/exceptions.hpp84
-rw-r--r--3rdParty/Boost/src/boost/property_tree/id_translator.hpp51
-rw-r--r--3rdParty/Boost/src/boost/property_tree/ptree.hpp517
-rw-r--r--3rdParty/Boost/src/boost/property_tree/ptree_fwd.hpp143
-rw-r--r--3rdParty/Boost/src/boost/property_tree/stream_translator.hpp221
-rw-r--r--3rdParty/Boost/src/boost/property_tree/string_path.hpp273
-rw-r--r--3rdParty/Boost/src/boost/property_tree/xml_parser.hpp153
-rw-r--r--3rdParty/Boost/src/boost/range/begin.hpp23
-rw-r--r--3rdParty/Boost/src/boost/range/concepts.hpp39
-rw-r--r--3rdParty/Boost/src/boost/range/detail/begin.hpp28
-rw-r--r--3rdParty/Boost/src/boost/range/detail/end.hpp37
-rw-r--r--3rdParty/Boost/src/boost/range/detail/safe_bool.hpp72
-rw-r--r--3rdParty/Boost/src/boost/range/end.hpp23
-rwxr-xr-x3rdParty/Boost/src/boost/range/iterator_range_core.hpp34
-rw-r--r--3rdParty/Boost/src/boost/range/size.hpp26
-rw-r--r--3rdParty/Boost/src/boost/serialization/access.hpp147
-rw-r--r--3rdParty/Boost/src/boost/serialization/base_object.hpp112
-rw-r--r--3rdParty/Boost/src/boost/serialization/collection_size_type.hpp62
-rw-r--r--3rdParty/Boost/src/boost/serialization/force_include.hpp59
-rw-r--r--3rdParty/Boost/src/boost/serialization/is_bitwise_serializable.hpp46
-rw-r--r--3rdParty/Boost/src/boost/serialization/level.hpp125
-rw-r--r--3rdParty/Boost/src/boost/serialization/level_enum.hpp55
-rw-r--r--3rdParty/Boost/src/boost/serialization/nvp.hpp144
-rw-r--r--3rdParty/Boost/src/boost/serialization/pfto.hpp78
-rw-r--r--3rdParty/Boost/src/boost/serialization/serialization.hpp167
-rw-r--r--3rdParty/Boost/src/boost/serialization/split_free.hpp93
-rw-r--r--3rdParty/Boost/src/boost/serialization/split_member.hpp86
-rw-r--r--3rdParty/Boost/src/boost/serialization/strong_typedef.hpp66
-rw-r--r--3rdParty/Boost/src/boost/serialization/tracking.hpp118
-rw-r--r--3rdParty/Boost/src/boost/serialization/tracking_enum.hpp41
-rw-r--r--3rdParty/Boost/src/boost/serialization/traits.hpp65
-rw-r--r--3rdParty/Boost/src/boost/serialization/type_info_implementation.hpp86
-rw-r--r--3rdParty/Boost/src/boost/serialization/version.hpp102
-rw-r--r--3rdParty/Boost/src/boost/serialization/void_cast_fwd.hpp37
-rw-r--r--3rdParty/Boost/src/boost/serialization/wrapper.hpp60
-rw-r--r--3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp12
-rw-r--r--3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp4
-rw-r--r--3rdParty/Boost/src/boost/signals/signal_template.hpp8
-rw-r--r--3rdParty/Boost/src/boost/static_assert.hpp10
-rw-r--r--3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp4
-rw-r--r--3rdParty/Boost/src/boost/throw_exception.hpp2
-rw-r--r--3rdParty/Boost/src/boost/token_functions.hpp8
-rw-r--r--3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp321
-rw-r--r--3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp24
-rw-r--r--3rdParty/Boost/src/boost/type_traits/common_type.hpp5
-rw-r--r--3rdParty/Boost/src/boost/type_traits/function_traits.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_const.hpp6
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp2
-rw-r--r--3rdParty/Boost/src/boost/type_traits/is_volatile.hpp6
-rw-r--r--3rdParty/Boost/src/boost/type_traits/remove_cv.hpp4
-rw-r--r--3rdParty/Boost/src/boost/type_traits/remove_reference.hpp4
-rw-r--r--3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp4
-rw-r--r--3rdParty/Boost/src/boost/unordered/detail/buckets.hpp2
-rw-r--r--3rdParty/Boost/src/boost/unordered/detail/fwd.hpp140
-rw-r--r--3rdParty/Boost/src/boost/unordered/detail/util.hpp4
-rw-r--r--3rdParty/Boost/src/boost/unordered/unordered_map.hpp22
-rw-r--r--3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp12
-rw-r--r--3rdParty/Boost/src/boost/utility/detail/in_place_factory_prefix.hpp36
-rw-r--r--3rdParty/Boost/src/boost/utility/detail/in_place_factory_suffix.hpp23
-rw-r--r--3rdParty/Boost/src/boost/utility/in_place_factory.hpp88
-rw-r--r--3rdParty/Boost/src/boost/utility/value_init.hpp258
-rw-r--r--3rdParty/Boost/src/boost/version.hpp4
-rw-r--r--3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp12
-rw-r--r--3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp6
-rw-r--r--3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp94
-rw-r--r--3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp22
-rw-r--r--3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp6
-rw-r--r--3rdParty/Boost/src/libs/regex/src/regex.cpp16
-rw-r--r--3rdParty/Boost/src/libs/system/src/error_code.cpp3
-rw-r--r--3rdParty/Boost/src/tools/bcp/add_path.cpp2
-rw-r--r--3rdParty/Boost/src/tools/bcp/bcp.hpp6
-rw-r--r--3rdParty/Boost/src/tools/bcp/bcp_imp.cpp17
-rw-r--r--3rdParty/Boost/src/tools/bcp/copy_path.cpp22
-rw-r--r--3rdParty/Boost/src/tools/bcp/file_types.cpp8
-rw-r--r--3rdParty/Boost/src/tools/bcp/fileview.cpp4
-rw-r--r--3rdParty/Boost/src/tools/bcp/fileview.hpp6
-rw-r--r--3rdParty/Boost/src/tools/bcp/main.cpp6
-rw-r--r--3rdParty/Boost/src/tools/bcp/output_licence_info.cpp2
-rw-r--r--3rdParty/Boost/src/tools/bcp/scan_licence.cpp4
506 files changed, 2279 insertions, 20041 deletions
diff --git a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp
index 7f5f780..8b9ad42 100644
--- a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp
+++ b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format.hpp
@@ -74,17 +74,17 @@ namespace boost {
const InputT& Input,
FormatterT Formatter,
const FindResultT& FindResult )
- {
+ {
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
- return ::boost::algorithm::detail::find_format_copy_impl2(
- Output,
- Input,
- Formatter,
- FindResult,
- Formatter(FindResult) );
+ return ::boost::algorithm::detail::find_format_copy_impl2(
+ Output,
+ Input,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
} else {
return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
- }
+ }
}
@@ -137,14 +137,14 @@ namespace boost {
const FindResultT& FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
- return ::boost::algorithm::detail::find_format_copy_impl2(
- Input,
- Formatter,
- FindResult,
- Formatter(FindResult) );
+ return ::boost::algorithm::detail::find_format_copy_impl2(
+ Input,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
} else {
return Input;
- }
+ }
}
// replace implementation ----------------------------------------------------//
@@ -189,12 +189,12 @@ namespace boost {
const FindResultT& FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
- ::boost::algorithm::detail::find_format_impl2(
- Input,
- Formatter,
- FindResult,
- Formatter(FindResult) );
- }
+ ::boost::algorithm::detail::find_format_impl2(
+ Input,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
}
} // namespace detail
diff --git a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp
index 0f184a3..978710c 100644
--- a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp
+++ b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_all.hpp
@@ -84,18 +84,18 @@ namespace boost {
FinderT Finder,
FormatterT Formatter,
const FindResultT& FindResult )
- {
+ {
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
- return ::boost::algorithm::detail::find_format_all_copy_impl2(
- Output,
- Input,
- Finder,
- Formatter,
- FindResult,
- Formatter(FindResult) );
+ return ::boost::algorithm::detail::find_format_all_copy_impl2(
+ Output,
+ Input,
+ Finder,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
} else {
return std::copy( ::boost::begin(Input), ::boost::end(Input), Output );
- }
+ }
}
// find_format_all_copy implementation ----------------------------------------------//
@@ -161,15 +161,15 @@ namespace boost {
const FindResultT& FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
- return ::boost::algorithm::detail::find_format_all_copy_impl2(
- Input,
- Finder,
- Formatter,
- FindResult,
- Formatter(FindResult) );
+ return ::boost::algorithm::detail::find_format_all_copy_impl2(
+ Input,
+ Finder,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
} else {
return Input;
- }
+ }
}
// find_format_all implementation ------------------------------------------------//
@@ -257,13 +257,13 @@ namespace boost {
FindResultT FindResult)
{
if( ::boost::algorithm::detail::check_find_result(Input, FindResult) ) {
- ::boost::algorithm::detail::find_format_all_impl2(
- Input,
- Finder,
- Formatter,
- FindResult,
- Formatter(FindResult) );
- }
+ ::boost::algorithm::detail::find_format_all_impl2(
+ Input,
+ Finder,
+ Formatter,
+ FindResult,
+ Formatter(FindResult) );
+ }
}
} // namespace detail
diff --git a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp
index 4872c5a..e8bd84a 100644
--- a/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp
+++ b/3rdParty/Boost/src/boost/algorithm/string/detail/find_format_store.hpp
@@ -53,7 +53,7 @@ namespace boost {
{
iterator_range<ForwardIteratorT>::operator=(FindResult);
if( !this->empty() ) {
- m_FormatResult=m_Formatter(FindResult);
+ m_FormatResult=m_Formatter(FindResult);
}
return *this;
diff --git a/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp b/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp
index 72696c7..b72ba7c 100644
--- a/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp
+++ b/3rdParty/Boost/src/boost/algorithm/string/find_iterator.hpp
@@ -259,7 +259,11 @@ namespace boost {
m_End(End),
m_bEof(false)
{
- increment();
+ // force the correct behavior for empty sequences and yield at least one token
+ if(Begin!=End)
+ {
+ increment();
+ }
}
//! Constructor
/*!
@@ -278,7 +282,11 @@ namespace boost {
m_Next=::boost::begin(lit_col);
m_End=::boost::end(lit_col);
- increment();
+ // force the correct behavior for empty sequences and yield at least one token
+ if(m_Next!=m_End)
+ {
+ increment();
+ }
}
diff --git a/3rdParty/Boost/src/boost/archive/archive_exception.hpp b/3rdParty/Boost/src/boost/archive/archive_exception.hpp
deleted file mode 100644
index 242f752..0000000
--- a/3rdParty/Boost/src/boost/archive/archive_exception.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-#ifndef BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP
-#define BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// archive/archive_exception.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <exception>
-#include <cassert>
-#include <string>
-
-#include <boost/config.hpp>
-#include <boost/preprocessor/empty.hpp>
-#include <boost/archive/detail/decl.hpp>
-
-// note: the only reason this is in here is that windows header
-// includes #define exception_code _exception_code (arrrgghhhh!).
-// the most expedient way to address this is be sure that this
-// header is always included whenever this header file is included.
-#if defined(BOOST_WINDOWS)
-#include <excpt.h>
-#endif
-
-#include <boost/archive/detail/abi_prefix.hpp> // must be the last header
-
-namespace boost {
-namespace archive {
-
-//////////////////////////////////////////////////////////////////////
-// exceptions thrown by archives
-//
-class BOOST_ARCHIVE_DECL(BOOST_PP_EMPTY()) archive_exception :
- public virtual std::exception
-{
-public:
- typedef enum {
- no_exception, // initialized without code
- other_exception, // any excepton not listed below
- unregistered_class, // attempt to serialize a pointer of an
- // an unregistered class
- invalid_signature, // first line of archive does not contain
- // expected string
- unsupported_version,// archive created with library version
- // subsequent to this one
- pointer_conflict, // an attempt has been made to directly
- // serialize an object which has
- // already been serialzed through a pointer.
- // Were this permited, the archive load would result
- // in the creation of an extra copy of the obect.
- incompatible_native_format, // attempt to read native binary format
- // on incompatible platform
- array_size_too_short,// array being loaded doesn't fit in array allocated
- input_stream_error, // error on input stream
- invalid_class_name, // class name greater than the maximum permitted.
- // most likely a corrupted archive or an attempt
- // to insert virus via buffer overrun method.
- unregistered_cast, // base - derived relationship not registered with
- // void_cast_register
- unsupported_class_version, // type saved with a version # greater than the
- // one used by the program. This indicates that the proggram
- // needs to be rebuilt.
- multiple_code_instantiation, // code for implementing serialization for some
- // type has been instantiated in more than one module.
- output_stream_error // error on input stream
- } exception_code;
-protected:
- std::string m_msg;
-public:
- exception_code code;
- archive_exception(
- exception_code c,
- const char * e1 = NULL,
- const char * e2 = NULL
- );
- ~archive_exception() throw ();
- virtual const char *what( ) const throw();
-protected:
- archive_exception();
-};
-
-}// namespace archive
-}// namespace boost
-
-#include <boost/archive/detail/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-
-#endif //BOOST_ARCHIVE_ARCHIVE_EXCEPTION_HPP
diff --git a/3rdParty/Boost/src/boost/archive/detail/abi_prefix.hpp b/3rdParty/Boost/src/boost/archive/detail/abi_prefix.hpp
deleted file mode 100644
index e39ef11..0000000
--- a/3rdParty/Boost/src/boost/archive/detail/abi_prefix.hpp
+++ /dev/null
@@ -1,20 +0,0 @@
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// abi_prefix.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config/abi_prefix.hpp> // must be the last header
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable : 4251 4231 4660 4275)
-#endif
-
-#if defined( __BORLANDC__ )
-#pragma nopushoptwarn
-#endif
-
diff --git a/3rdParty/Boost/src/boost/archive/detail/abi_suffix.hpp b/3rdParty/Boost/src/boost/archive/detail/abi_suffix.hpp
deleted file mode 100644
index a283b36..0000000
--- a/3rdParty/Boost/src/boost/archive/detail/abi_suffix.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// abi_suffix.hpp
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-#include <boost/config/abi_suffix.hpp> // pops abi_suffix.hpp pragmas
-
-#if defined( __BORLANDC__ )
-#pragma nopushoptwarn
-#endif
-
diff --git a/3rdParty/Boost/src/boost/archive/detail/decl.hpp b/3rdParty/Boost/src/boost/archive/detail/decl.hpp
deleted file mode 100644
index 9695001..0000000
--- a/3rdParty/Boost/src/boost/archive/detail/decl.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-#ifndef BOOST_ARCHIVE_DETAIL_DECL_HPP
-#define BOOST_ARCHIVE_DETAIL_DECL_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2///////// 3/////////4/////////5/////////6/////////7/////////8
-// decl.hpp
-//
-// (c) Copyright Robert Ramey 2004
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See library home page at http://www.boost.org/libs/serialization
-
-//----------------------------------------------------------------------------//
-
-// This header implements separate compilation features as described in
-// http://www.boost.org/more/separate_compilation.html
-
-#include <boost/config.hpp>
-#include <boost/preprocessor/facilities/empty.hpp>
-
-#if defined(BOOST_HAS_DECLSPEC)
- #if (defined(BOOST_ALL_DYN_LINK) || defined(BOOST_SERIALIZATION_DYN_LINK))
- #if defined(BOOST_ARCHIVE_SOURCE)
- #if defined(__BORLANDC__)
- #define BOOST_ARCHIVE_DECL(T) T __export
- #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __export
- #else
- #define BOOST_ARCHIVE_DECL(T) __declspec(dllexport) T
- #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllexport) T
- #endif
- #else
- #if defined(__BORLANDC__)
- #define BOOST_ARCHIVE_DECL(T) T __import
- #else
- #define BOOST_ARCHIVE_DECL(T) __declspec(dllimport) T
- #endif
- #endif
- #if defined(BOOST_WARCHIVE_SOURCE)
- #if defined(__BORLANDC__)
- #define BOOST_WARCHIVE_DECL(T) T __export
- #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __export
- #else
- #define BOOST_WARCHIVE_DECL(T) __declspec(dllexport) T
- #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllexport) T
- #endif
- #else
- #if defined(__BORLANDC__)
- #define BOOST_WARCHIVE_DECL(T) T __import
- #else
- #define BOOST_WARCHIVE_DECL(T) __declspec(dllimport) T
- #endif
- #endif
- #if !defined(BOOST_WARCHIVE_SOURCE) && !defined(BOOST_ARCHIVE_SOURCE)
- #if defined(__BORLANDC__)
- #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T __import
- #else
- #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) __declspec(dllimport) T
- #endif
- #endif
- #endif
-#endif // BOOST_HAS_DECLSPEC
-
-#if ! defined(BOOST_ARCHIVE_DECL)
- #define BOOST_ARCHIVE_DECL(T) T
-#endif
-#if ! defined(BOOST_WARCHIVE_DECL)
- #define BOOST_WARCHIVE_DECL(T) T
-#endif
-#if ! defined(BOOST_ARCHIVE_OR_WARCHIVE_DECL)
- #define BOOST_ARCHIVE_OR_WARCHIVE_DECL(T) T
-#endif
-
-#endif // BOOST_ARCHIVE_DETAIL_DECL_HPP
diff --git a/3rdParty/Boost/src/boost/array.hpp b/3rdParty/Boost/src/boost/array.hpp
index 7df2771..85b63a2 100644
--- a/3rdParty/Boost/src/boost/array.hpp
+++ b/3rdParty/Boost/src/boost/array.hpp
@@ -13,6 +13,7 @@
* accompanying file LICENSE_1_0.txt or copy at
* http://www.boost.org/LICENSE_1_0.txt)
*
+ * 28 Dec 2010 - (mtc) Added cbegin and cend (and crbegin and crend) for C++Ox compatibility.
* 10 Mar 2010 - (mtc) fill method added, matching resolution of the standard library working group.
* See <http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#776> or Trac issue #3168
* Eventually, we should remove "assign" which is now a synonym for "fill" (Marshall Clow)
@@ -69,10 +70,13 @@ namespace boost {
typedef std::ptrdiff_t difference_type;
// iterator support
- iterator begin() { return elems; }
- const_iterator begin() const { return elems; }
- iterator end() { return elems+N; }
- const_iterator end() const { return elems+N; }
+ iterator begin() { return elems; }
+ const_iterator begin() const { return elems; }
+ const_iterator cbegin() const { return elems; }
+
+ iterator end() { return elems+N; }
+ const_iterator end() const { return elems+N; }
+ const_iterator cend() const { return elems+N; }
// reverse iterator support
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
@@ -99,10 +103,17 @@ namespace boost {
const_reverse_iterator rbegin() const {
return const_reverse_iterator(end());
}
+ const_reverse_iterator crbegin() const {
+ return const_reverse_iterator(end());
+ }
+
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const {
return const_reverse_iterator(begin());
}
+ const_reverse_iterator crend() const {
+ return const_reverse_iterator(begin());
+ }
// operator[]
reference operator[](size_type i)
@@ -200,10 +211,13 @@ namespace boost {
typedef std::ptrdiff_t difference_type;
// iterator support
- iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
- const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
- iterator end() { return begin(); }
- const_iterator end() const { return begin(); }
+ iterator begin() { return iterator( reinterpret_cast< T * >( this ) ); }
+ const_iterator begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
+ const_iterator cbegin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
+
+ iterator end() { return begin(); }
+ const_iterator end() const { return begin(); }
+ const_iterator cend() const { return cbegin(); }
// reverse iterator support
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
@@ -230,10 +244,17 @@ namespace boost {
const_reverse_iterator rbegin() const {
return const_reverse_iterator(end());
}
+ const_reverse_iterator crbegin() const {
+ return const_reverse_iterator(end());
+ }
+
reverse_iterator rend() { return reverse_iterator(begin()); }
const_reverse_iterator rend() const {
return const_reverse_iterator(begin());
}
+ const_reverse_iterator crend() const {
+ return const_reverse_iterator(begin());
+ }
// operator[]
reference operator[](size_type /*i*/)
@@ -346,7 +367,34 @@ namespace boost {
x.swap(y);
}
- // Specific for boost::array: simply returns its elems data member.
+#if defined(__SUNPRO_CC)
+// Trac ticket #4757; the Sun Solaris compiler can't handle
+// syntax like 'T(&get_c_array(boost::array<T,N>& arg))[N]'
+//
+// We can't just use this for all compilers, because the
+// borland compilers can't handle this form.
+ namespace detail {
+ template <typename T, std::size_t N> struct c_array
+ {
+ typedef T type[N];
+ };
+ }
+
+ // Specific for boost::array: simply returns its elems data member.
+ template <typename T, std::size_t N>
+ typename detail::c_array<T,N>::type& get_c_array(boost::array<T,N>& arg)
+ {
+ return arg.elems;
+ }
+
+ // Specific for boost::array: simply returns its elems data member.
+ template <typename T, std::size_t N>
+ typename const detail::c_array<T,N>::type& get_c_array(const boost::array<T,N>& arg)
+ {
+ return arg.elems;
+ }
+#else
+// Specific for boost::array: simply returns its elems data member.
template <typename T, std::size_t N>
T(&get_c_array(boost::array<T,N>& arg))[N]
{
@@ -359,7 +407,8 @@ namespace boost {
{
return arg.elems;
}
-
+#endif
+
#if 0
// Overload for std::array, assuming that std::array will have
// explicit conversion functions as discussed at the WG21 meeting
diff --git a/3rdParty/Boost/src/boost/asio.hpp b/3rdParty/Boost/src/boost/asio.hpp
index f94e0d6..2681806 100644
--- a/3rdParty/Boost/src/boost/asio.hpp
+++ b/3rdParty/Boost/src/boost/asio.hpp
@@ -2,7 +2,7 @@
// asio.hpp
// ~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp
index 5272809..a79967f 100644
--- a/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_datagram_socket.hpp
@@ -2,7 +2,7 @@
// basic_datagram_socket.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp b/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp
index dc471e2..452999d 100644
--- a/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_deadline_timer.hpp
@@ -2,7 +2,7 @@
// basic_deadline_timer.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_io_object.hpp b/3rdParty/Boost/src/boost/asio/basic_io_object.hpp
index 414f365..8e137e7 100644
--- a/3rdParty/Boost/src/boost/asio/basic_io_object.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_io_object.hpp
@@ -2,7 +2,7 @@
// basic_io_object.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp
index 0b877de..0e58e7f 100644
--- a/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_raw_socket.hpp
@@ -2,7 +2,7 @@
// basic_raw_socket.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp b/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp
index 4936c9c..744fd3b 100644
--- a/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_serial_port.hpp
@@ -2,7 +2,7 @@
// basic_serial_port.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/basic_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_socket.hpp
index 50a0c47..11ce5c9 100644
--- a/3rdParty/Boost/src/boost/asio/basic_socket.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_socket.hpp
@@ -2,7 +2,7 @@
// basic_socket.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp b/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp
index 5192df7..a877bc3 100644
--- a/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_socket_acceptor.hpp
@@ -2,7 +2,7 @@
// basic_socket_acceptor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp b/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp
index a8cea4f..142f404 100644
--- a/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_socket_iostream.hpp
@@ -2,7 +2,7 @@
// basic_socket_iostream.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp b/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp
index 35e96d0..c2a9a99 100644
--- a/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_socket_streambuf.hpp
@@ -2,7 +2,7 @@
// basic_socket_streambuf.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp b/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp
index 956d623..87bd035 100644
--- a/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_stream_socket.hpp
@@ -2,7 +2,7 @@
// basic_stream_socket.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp b/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp
index 546a4ac..7a04c69 100644
--- a/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_streambuf.hpp
@@ -2,7 +2,7 @@
// basic_streambuf.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -237,6 +237,8 @@ public:
*/
void consume(std::size_t n)
{
+ if (egptr() < pptr())
+ setg(&buffer_[0], gptr(), pptr());
if (gptr() + n > pptr())
n = pptr() - gptr();
gbump(static_cast<int>(n));
diff --git a/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp b/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp
index 215937e..a7d82d3 100644
--- a/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/basic_streambuf_fwd.hpp
@@ -2,7 +2,7 @@
// basic_streambuf_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffer.hpp b/3rdParty/Boost/src/boost/asio/buffer.hpp
index f925361..15eaad4 100644
--- a/3rdParty/Boost/src/boost/asio/buffer.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffer.hpp
@@ -2,7 +2,7 @@
// buffer.hpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp b/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp
index 935f5b9..af24dd6 100644
--- a/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffered_read_stream.hpp
@@ -2,7 +2,7 @@
// buffered_read_stream.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp b/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp
index 87f27d9..9c8a1af 100644
--- a/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffered_read_stream_fwd.hpp
@@ -2,7 +2,7 @@
// buffered_read_stream_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffered_stream.hpp b/3rdParty/Boost/src/boost/asio/buffered_stream.hpp
index ceeb6f2..43d21de 100644
--- a/3rdParty/Boost/src/boost/asio/buffered_stream.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffered_stream.hpp
@@ -2,7 +2,7 @@
// buffered_stream.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp b/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp
index d23bc26..042b990 100644
--- a/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffered_stream_fwd.hpp
@@ -2,7 +2,7 @@
// buffered_stream_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp b/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp
index c918a0a..a163b13 100644
--- a/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffered_write_stream.hpp
@@ -2,7 +2,7 @@
// buffered_write_stream.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp b/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp
index 8f0f409..0590a96 100644
--- a/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffered_write_stream_fwd.hpp
@@ -2,7 +2,7 @@
// buffered_write_stream_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp b/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp
index 1ffd02d..3375361 100644
--- a/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp
+++ b/3rdParty/Boost/src/boost/asio/buffers_iterator.hpp
@@ -2,7 +2,7 @@
// buffers_iterator.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/completion_condition.hpp b/3rdParty/Boost/src/boost/asio/completion_condition.hpp
index dfb48ed..7f5fc09 100644
--- a/3rdParty/Boost/src/boost/asio/completion_condition.hpp
+++ b/3rdParty/Boost/src/boost/asio/completion_condition.hpp
@@ -2,7 +2,7 @@
// completion_condition.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp b/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp
index 4d324e2..0db1f34 100644
--- a/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/datagram_socket_service.hpp
@@ -2,7 +2,7 @@
// datagram_socket_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/deadline_timer.hpp b/3rdParty/Boost/src/boost/asio/deadline_timer.hpp
index 3ed7b67..866588b 100644
--- a/3rdParty/Boost/src/boost/asio/deadline_timer.hpp
+++ b/3rdParty/Boost/src/boost/asio/deadline_timer.hpp
@@ -2,7 +2,7 @@
// deadline_timer.hpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp b/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp
index 77060c4..ce8fd13 100644
--- a/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/deadline_timer_service.hpp
@@ -2,7 +2,7 @@
// deadline_timer_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp
index 3d47a9a..b7a27bf 100644
--- a/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/array_fwd.hpp
@@ -2,7 +2,7 @@
// detail/array_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp b/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp
index 797e3ce..b2b76d6 100644
--- a/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/base_from_completion_cond.hpp
@@ -2,7 +2,7 @@
// detail/base_from_completion_cond.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp
index 6b515db..0199643 100644
--- a/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/bind_handler.hpp
@@ -2,7 +2,7 @@
// detail/bind_handler.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp b/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp
index bcffc1a..7df4128 100644
--- a/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/buffer_resize_guard.hpp
@@ -2,7 +2,7 @@
// detail/buffer_resize_guard.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp
index 214cd41..fdda23f 100644
--- a/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/buffer_sequence_adapter.hpp
@@ -2,7 +2,7 @@
// detail/buffer_sequence_adapter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp b/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp
index 9a2929e..86763b5 100644
--- a/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/buffered_stream_storage.hpp
@@ -2,7 +2,7 @@
// detail/buffered_stream_storage.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp b/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp
index 561a826..d5f9099 100644
--- a/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/call_stack.hpp
@@ -2,7 +2,7 @@
// detail/call_stack.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp
index 6701fb3..3b023d1 100644
--- a/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/completion_handler.hpp
@@ -2,7 +2,7 @@
// detail/completion_handler.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/config.hpp b/3rdParty/Boost/src/boost/asio/detail/config.hpp
index abd2044..45c2415 100644
--- a/3rdParty/Boost/src/boost/asio/detail/config.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/config.hpp
@@ -2,7 +2,7 @@
// detail/config.hpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp b/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp
index 23114a0..f50d4e0 100644
--- a/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/consuming_buffers.hpp
@@ -2,7 +2,7 @@
// detail/consuming_buffers.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp b/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp
index c391824..82e0d43 100644
--- a/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/deadline_timer_service.hpp
@@ -2,7 +2,7 @@
// detail/deadline_timer_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp b/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp
index 4f82cd6..f92a7b4 100644
--- a/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/descriptor_ops.hpp
@@ -2,7 +2,7 @@
// detail/descriptor_ops.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp b/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp
index c068108..884f8f6 100644
--- a/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/descriptor_read_op.hpp
@@ -2,7 +2,7 @@
// detail/descriptor_read_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp b/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp
index 0983854..805eb0b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/descriptor_write_op.hpp
@@ -2,7 +2,7 @@
// detail/descriptor_write_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp
index ef2b0dc..79c1cbb 100644
--- a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor.hpp
@@ -2,7 +2,7 @@
// detail/dev_poll_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -46,7 +46,7 @@ class dev_poll_reactor
: public boost::asio::detail::service_base<dev_poll_reactor>
{
public:
- enum { read_op = 0, write_op = 1,
+ enum op_types { read_op = 0, write_op = 1,
connect_op = 1, except_op = 2, max_ops = 3 };
// Per-descriptor data.
diff --git a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp
index 7e8defc..c5ceab2 100644
--- a/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/dev_poll_reactor_fwd.hpp
@@ -2,7 +2,7 @@
// detail/dev_poll_reactor_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp
index 18d87ee..1889017 100644
--- a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor.hpp
@@ -2,7 +2,7 @@
// detail/epoll_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -42,7 +42,7 @@ class epoll_reactor
: public boost::asio::detail::service_base<epoll_reactor>
{
public:
- enum { read_op = 0, write_op = 1,
+ enum op_types { read_op = 0, write_op = 1,
connect_op = 1, except_op = 2, max_ops = 3 };
// Per-descriptor queues.
diff --git a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp
index dc0e92d..01ee84c 100644
--- a/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/epoll_reactor_fwd.hpp
@@ -2,7 +2,7 @@
// detail/epoll_reactor_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/event.hpp b/3rdParty/Boost/src/boost/asio/detail/event.hpp
index c33b65a..c8109d1 100644
--- a/3rdParty/Boost/src/boost/asio/detail/event.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/event.hpp
@@ -2,7 +2,7 @@
// detail/event.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp
index b2cb68b..954fe79 100644
--- a/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/eventfd_select_interrupter.hpp
@@ -2,7 +2,7 @@
// detail/eventfd_select_interrupter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp
index 138264f..8df0426 100644
--- a/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/fd_set_adapter.hpp
@@ -2,7 +2,7 @@
// detail/fd_set_adapter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp
index 443f487..4cb27dc 100644
--- a/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp
index 1350f09..58cdfb4 100644
--- a/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/gcc_arm_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/gcc_arm_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp
index ef5c093..6c5226b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/gcc_hppa_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/gcc_hppa_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp
index 83341d5..65472cc 100644
--- a/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/gcc_sync_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/gcc_sync_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp
index 5353f87..fb8473c 100644
--- a/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/gcc_x86_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/gcc_x86_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp b/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp
index 00d4c02..fc3ec33 100644
--- a/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/handler_alloc_helpers.hpp
@@ -2,7 +2,7 @@
// detail/handler_alloc_helpers.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp b/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp
index 996bde9..3b44997 100644
--- a/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/handler_invoke_helpers.hpp
@@ -2,7 +2,7 @@
// detail/handler_invoke_helpers.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp b/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp
index c58096b..4f4eed3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/hash_map.hpp
@@ -2,7 +2,7 @@
// detail/hash_map.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp
index 74a8e6f..9a2bb3b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/descriptor_ops.ipp
@@ -2,7 +2,7 @@
// detail/impl/descriptor_ops.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp
index 2aed0a8..a6b7078 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.hpp
@@ -2,7 +2,7 @@
// detail/impl/dev_poll_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp
index 67f6d50..b9d5e61 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/dev_poll_reactor.ipp
@@ -2,7 +2,7 @@
// detail/impl/dev_poll_reactor.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp
index 49f0d50..0339cfd 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.hpp
@@ -2,7 +2,7 @@
// detail/impl/epoll_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp
index a4c2491..5afb891 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/epoll_reactor.ipp
@@ -2,7 +2,7 @@
// detail/impl/epoll_reactor.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -357,7 +357,7 @@ void epoll_reactor::update_timeout()
return;
}
#endif // defined(BOOST_ASIO_HAS_TIMERFD)
- interrupter_.interrupt();
+ interrupt();
}
int epoll_reactor::get_timeout()
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp
index 5bcc55b..d270b31 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/eventfd_select_interrupter.ipp
@@ -2,7 +2,7 @@
// detail/impl/eventfd_select_interrupter.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp
index 7bb0269..779f272 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.hpp
@@ -2,7 +2,7 @@
// detail/impl/kqueue_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp
index 08209bd..3ac9eae 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/kqueue_reactor.ipp
@@ -2,7 +2,7 @@
// detail/impl/kqueue_reactor.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -47,9 +47,9 @@ kqueue_reactor::kqueue_reactor(boost::asio::io_service& io_service)
interrupter_(),
shutdown_(false)
{
- // The interrupter is put into a permanently readable state. Whenever we
- // want to interrupt the blocked kevent call we register a one-shot read
- // operation against the descriptor.
+ // The interrupter is put into a permanently readable state. Whenever we want
+ // to interrupt the blocked kevent call we register a read operation against
+ // the descriptor.
interrupter_.interrupt();
}
@@ -139,17 +139,17 @@ void kqueue_reactor::start_op(int op_type, socket_type descriptor,
{
case read_op:
BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ,
- EV_ADD | EV_ONESHOT, 0, 0, descriptor_data);
+ EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
break;
case write_op:
BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE,
- EV_ADD | EV_ONESHOT, 0, 0, descriptor_data);
+ EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
break;
case except_op:
if (!descriptor_data->op_queue_[read_op].empty())
return; // Already registered for read events.
BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ,
- EV_ADD | EV_ONESHOT, EV_OOBAND, 0, descriptor_data);
+ EV_ADD | EV_CLEAR, EV_OOBAND, 0, descriptor_data);
break;
}
@@ -247,7 +247,7 @@ void kqueue_reactor::run(bool block, op_queue<operation>& ops)
if (ptr == &interrupter_)
{
// No need to reset the interrupter since we're leaving the descriptor
- // in a ready-to-read state and relying on one-shot notifications.
+ // in a ready-to-read state and relying on edge-triggered notifications.
}
else
{
@@ -296,18 +296,20 @@ void kqueue_reactor::run(bool block, op_queue<operation>& ops)
case EVFILT_READ:
if (!descriptor_data->op_queue_[read_op].empty())
BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ,
- EV_ADD | EV_ONESHOT, 0, 0, descriptor_data);
+ EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
else if (!descriptor_data->op_queue_[except_op].empty())
BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_READ,
- EV_ADD | EV_ONESHOT, EV_OOBAND, 0, descriptor_data);
+ EV_ADD | EV_CLEAR, EV_OOBAND, 0, descriptor_data);
else
continue;
+ break;
case EVFILT_WRITE:
if (!descriptor_data->op_queue_[write_op].empty())
BOOST_ASIO_KQUEUE_EV_SET(&event, descriptor, EVFILT_WRITE,
- EV_ADD | EV_ONESHOT, 0, 0, descriptor_data);
+ EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
else
continue;
+ break;
default:
break;
}
@@ -336,7 +338,7 @@ void kqueue_reactor::interrupt()
{
struct kevent event;
BOOST_ASIO_KQUEUE_EV_SET(&event, interrupter_.read_descriptor(),
- EVFILT_READ, EV_ADD | EV_ONESHOT, 0, 0, &interrupter_);
+ EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, &interrupter_);
::kevent(kqueue_fd_, &event, 1, 0, 0, 0);
}
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp
index f2a7291..9a0a872 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/pipe_select_interrupter.ipp
@@ -2,7 +2,7 @@
// detail/impl/pipe_select_interrupter.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp
index 7e89b6c..893e8cc 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_event.ipp
@@ -2,7 +2,7 @@
// detail/impl/posix_event.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp
index a4f81bb..908bfab 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_mutex.ipp
@@ -2,7 +2,7 @@
// detail/impl/posix_mutex.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp
index 5dc41fa..feb6dd1 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_thread.ipp
@@ -2,7 +2,7 @@
// detail/impl/posix_thread.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp
index 1c626e5..89c1bf5 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/posix_tss_ptr.ipp
@@ -2,7 +2,7 @@
// detail/impl/posix_tss_ptr.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp
index 6f0dc5a..a1ee09a 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_descriptor_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/reactive_descriptor_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp
index b467209..ece61d3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_serial_port_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/reactive_serial_port_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp
index cecbe73..31f5bc4 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/reactive_socket_service_base.ipp
@@ -2,7 +2,7 @@
// detail/reactive_socket_service_base.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -64,7 +64,7 @@ boost::system::error_code reactive_socket_service_base::close(
if (is_open(impl))
reactor_.close_descriptor(impl.socket_, impl.reactor_data_);
- if (socket_ops::close(impl.socket_, impl.state_, true, ec) == 0)
+ if (socket_ops::close(impl.socket_, impl.state_, false, ec) == 0)
construct(impl);
return ec;
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp
index d1af0be..e456bb9 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/resolver_service_base.ipp
@@ -2,7 +2,7 @@
// detail/impl/resolver_service_base.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp
index 55e064e..3773bfb 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.hpp
@@ -2,7 +2,7 @@
// detail/impl/select_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp
index af6e6c1..8fcf68e 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/select_reactor.ipp
@@ -2,7 +2,7 @@
// detail/impl/select_reactor.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp
index 59eb3f7..97f5771 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.hpp
@@ -2,7 +2,7 @@
// detail/impl/service_registry.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp
index 9f7381e..c2f07ec 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/service_registry.ipp
@@ -2,7 +2,7 @@
// detail/impl/service_registry.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp
index 5ac052a..e240acd 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/socket_ops.ipp
@@ -2,7 +2,7 @@
// detail/impl/socket_ops.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp
index d697a6e..3b64771 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/socket_select_interrupter.ipp
@@ -2,7 +2,7 @@
// detail/impl/socket_select_interrupter.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp
index e959947..5cb320d 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.hpp
@@ -2,7 +2,7 @@
// detail/impl/strand_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp
index f94570a..6a42146 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/strand_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/strand_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp
index ed5b2c4..a002189 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.hpp
@@ -2,7 +2,7 @@
// detail/impl/task_io_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp
index 4cc2326..babfa7b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/task_io_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/task_io_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp
index e66cca5..5ba6b9c 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/throw_error.ipp
@@ -2,7 +2,7 @@
// detail/impl/throw_error.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp
index 275b9c5..d1027e6 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/timer_queue_set.ipp
@@ -2,7 +2,7 @@
// detail/impl/timer_queue_set.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp
index d383c5b..fe904fb 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_event.ipp
@@ -2,7 +2,7 @@
// detail/win_event.ipp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp
index 3169632..eb6643a 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_handle_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/win_iocp_handle_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp
index cccff70..18b9413 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.hpp
@@ -2,7 +2,7 @@
// detail/impl/win_iocp_io_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp
index 08b81e9..9711702 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_io_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/win_iocp_io_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp
index bd2310c..32ab6d1 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_serial_port_service.ipp
@@ -2,7 +2,7 @@
// detail/impl/win_iocp_serial_port_service.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp
index e301658..0a2825b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_iocp_socket_service_base.ipp
@@ -2,7 +2,7 @@
// detail/impl/win_iocp_socket_service_base.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp
index 65ffb3b..af0d20e 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_mutex.ipp
@@ -2,7 +2,7 @@
// detail/impl/win_mutex.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp
index 22d2300..07cc5c2 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_thread.ipp
@@ -2,7 +2,7 @@
// detail/impl/win_thread.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp
index 7da9be3..02abd55 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/win_tss_ptr.ipp
@@ -2,7 +2,7 @@
// detail/impl/win_tss_ptr.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp b/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp
index 082ea84..e8fd647 100644
--- a/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp
+++ b/3rdParty/Boost/src/boost/asio/detail/impl/winsock_init.ipp
@@ -2,7 +2,7 @@
// detail/impl/winsock_init.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/io_control.hpp b/3rdParty/Boost/src/boost/asio/detail/io_control.hpp
index cb02fee..c63e6e5 100644
--- a/3rdParty/Boost/src/boost/asio/detail/io_control.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/io_control.hpp
@@ -2,7 +2,7 @@
// detail/io_control.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp
index eb2a243..80f7ca3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor.hpp
@@ -2,7 +2,7 @@
// detail/kqueue_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp
index 97f8c96..1bceb30 100644
--- a/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/kqueue_reactor_fwd.hpp
@@ -2,7 +2,7 @@
// detail/kqueue_reactor_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp
index a653aee..d37eea6 100644
--- a/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/macos_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/macos_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/mutex.hpp
index f601996..988dd3a 100644
--- a/3rdParty/Boost/src/boost/asio/detail/mutex.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/mutex.hpp
@@ -2,7 +2,7 @@
// detail/mutex.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp b/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp
index 65ae9a2..234ce93 100644
--- a/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/noncopyable.hpp
@@ -2,7 +2,7 @@
// detail/noncopyable.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/null_event.hpp b/3rdParty/Boost/src/boost/asio/detail/null_event.hpp
index 3acc26c..7f079ae 100644
--- a/3rdParty/Boost/src/boost/asio/detail/null_event.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/null_event.hpp
@@ -2,7 +2,7 @@
// detail/null_event.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp
index ead4c87..70680c5 100644
--- a/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/null_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/null_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp
index 8fca31c..e095e01 100644
--- a/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/null_mutex.hpp
@@ -2,7 +2,7 @@
// detail/null_mutex.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp b/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp
index 9eeccb9..bcf813b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/null_signal_blocker.hpp
@@ -2,7 +2,7 @@
// detail/null_signal_blocker.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp
index 1745011..ae32014 100644
--- a/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/null_thread.hpp
@@ -2,7 +2,7 @@
// detail/null_thread.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp
index 3eff2dc..c44b4de 100644
--- a/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/null_tss_ptr.hpp
@@ -2,7 +2,7 @@
// detail/null_tss_ptr.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp b/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp
index 87f3902..69790a0 100644
--- a/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/object_pool.hpp
@@ -2,7 +2,7 @@
// detail/object_pool.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp b/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp
index 10cd898..d385d3e 100644
--- a/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/old_win_sdk_compat.hpp
@@ -2,7 +2,7 @@
// detail/old_win_sdk_compat.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp b/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp
index e35e82d..d508e9d 100644
--- a/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/op_queue.hpp
@@ -2,7 +2,7 @@
// detail/op_queue.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/operation.hpp b/3rdParty/Boost/src/boost/asio/detail/operation.hpp
index e42455c..d2015e7 100644
--- a/3rdParty/Boost/src/boost/asio/detail/operation.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/operation.hpp
@@ -2,7 +2,7 @@
// detail/operation.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp
index 054f731..ad32736 100644
--- a/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/pipe_select_interrupter.hpp
@@ -2,7 +2,7 @@
// detail/pipe_select_interrupter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp b/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp
index d589cb7..75afc2b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/pop_options.hpp
@@ -2,7 +2,7 @@
// detail/pop_options.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp
index 13fa3d4..dc2ed31 100644
--- a/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/posix_event.hpp
@@ -2,7 +2,7 @@
// detail/posix_event.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp
index 5395eb9..b8be596 100644
--- a/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/posix_fd_set_adapter.hpp
@@ -2,7 +2,7 @@
// detail/posix_fd_set_adapter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp
index 4fcd8ac..5f5fd83 100644
--- a/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/posix_mutex.hpp
@@ -2,7 +2,7 @@
// detail/posix_mutex.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp
index 247a7a8..88fa330 100644
--- a/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/posix_signal_blocker.hpp
@@ -2,7 +2,7 @@
// detail/posix_signal_blocker.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp
index a87e396..5d8b684 100644
--- a/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/posix_thread.hpp
@@ -2,7 +2,7 @@
// detail/posix_thread.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp
index dfe8369..2edcbc1 100644
--- a/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/posix_tss_ptr.hpp
@@ -2,7 +2,7 @@
// detail/posix_tss_ptr.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/push_options.hpp b/3rdParty/Boost/src/boost/asio/detail/push_options.hpp
index 587aef9..050549d 100644
--- a/3rdParty/Boost/src/boost/asio/detail/push_options.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/push_options.hpp
@@ -2,7 +2,7 @@
// detail/push_options.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp
index 993211a..510c505 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_descriptor_service.hpp
@@ -2,7 +2,7 @@
// detail/reactive_descriptor_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp
index a2a6911..6ccc19e 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_null_buffers_op.hpp
@@ -2,7 +2,7 @@
// detail/reactive_null_buffers_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp
index 0955f1d..303c1f0 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_serial_port_service.hpp
@@ -2,7 +2,7 @@
// detail/reactive_serial_port_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp
index 3b2413f..3805c9f 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_accept_op.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_accept_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp
index 2bfb55d..6de7474 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_connect_op.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_connect_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp
index d58aa3f..75ce44f 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recv_op.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_recv_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp
index 469b6a5..b496ea0 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_recvfrom_op.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_recvfrom_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp
index 157d075..2fe195e 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_send_op.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_send_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp
index 6199ec2..12046c3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_sendto_op.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_sendto_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp
index 7288881..92eef4a 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp
index 1733ce1..df87ddb 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactive_socket_service_base.hpp
@@ -2,7 +2,7 @@
// detail/reactive_socket_service_base.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor.hpp
index 468276d..f225ea0 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactor.hpp
@@ -2,7 +2,7 @@
// detail/reactor.hpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp
index 3fae83c..a4ff94a 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactor_fwd.hpp
@@ -2,7 +2,7 @@
// detail/reactor_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp
index ed4a33d..0c8271c 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactor_op.hpp
@@ -2,7 +2,7 @@
// detail/reactor_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp b/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp
index 830e9b3..02b8ea2 100644
--- a/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/reactor_op_queue.hpp
@@ -2,7 +2,7 @@
// detail/reactor_op_queue.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp
index 2ccb5d1..d61ad61 100644
--- a/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/regex_fwd.hpp
@@ -2,7 +2,7 @@
// detail/regex_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp b/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp
index ccf5f53..46acda3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/resolve_endpoint_op.hpp
@@ -2,7 +2,7 @@
// detail/resolve_endpoint_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp b/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp
index aff6104..379ec39 100644
--- a/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/resolve_op.hpp
@@ -2,7 +2,7 @@
// detail/resolve_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp b/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp
index 1b734a0..1c343cb 100644
--- a/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/resolver_service.hpp
@@ -2,7 +2,7 @@
// detail/resolver_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp b/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp
index cc6ede6..60e9e09 100644
--- a/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/resolver_service_base.hpp
@@ -2,7 +2,7 @@
// detail/resolver_service_base.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp b/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp
index 247411e..b523ae5 100644
--- a/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/scoped_lock.hpp
@@ -2,7 +2,7 @@
// detail/scoped_lock.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp
index 9683e63..f0a1275 100644
--- a/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/select_interrupter.hpp
@@ -2,7 +2,7 @@
// detail/select_interrupter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp b/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp
index 55a819d..f4f8bdf 100644
--- a/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/select_reactor.hpp
@@ -2,7 +2,7 @@
// detail/select_reactor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -51,10 +51,10 @@ class select_reactor
{
public:
#if defined(BOOST_WINDOWS) || defined(__CYGWIN__)
- enum { read_op = 0, write_op = 1, except_op = 2,
+ enum op_types { read_op = 0, write_op = 1, except_op = 2,
max_select_ops = 3, connect_op = 3, max_ops = 4 };
#else // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
- enum { read_op = 0, write_op = 1, except_op = 2,
+ enum op_types { read_op = 0, write_op = 1, except_op = 2,
max_select_ops = 3, connect_op = 1, max_ops = 3 };
#endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
diff --git a/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp
index f4f9f65..78ff61b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/select_reactor_fwd.hpp
@@ -2,7 +2,7 @@
// detail/select_reactor_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp b/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp
index 6ba30f1..a247ea8 100644
--- a/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/service_registry.hpp
@@ -2,7 +2,7 @@
// detail/service_registry.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp
index 8713a30..a6bb25e 100644
--- a/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/service_registry_fwd.hpp
@@ -2,7 +2,7 @@
// detail/service_registry_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp
index 0c5586e..fe497b7 100644
--- a/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/shared_ptr.hpp
@@ -2,7 +2,7 @@
// detail/shared_ptr.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp b/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp
index 67eaac0..cc00482 100644
--- a/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/signal_blocker.hpp
@@ -2,7 +2,7 @@
// detail/signal_blocker.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp b/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp
index 76d21bf..f346956 100644
--- a/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/signal_init.hpp
@@ -2,7 +2,7 @@
// detail/signal_init.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp
index 7815acc..52d2e4d 100644
--- a/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/socket_holder.hpp
@@ -2,7 +2,7 @@
// detail/socket_holder.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp
index a32b4cc..18a8131 100644
--- a/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/socket_ops.hpp
@@ -2,7 +2,7 @@
// detail/socket_ops.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp
index 37efa83..c841033 100644
--- a/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/socket_option.hpp
@@ -2,7 +2,7 @@
// detail/socket_option.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp
index b674514..6d68d5a 100644
--- a/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/socket_select_interrupter.hpp
@@ -2,7 +2,7 @@
// detail/socket_select_interrupter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp b/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp
index 616e85a..f0679b6 100644
--- a/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/socket_types.hpp
@@ -2,7 +2,7 @@
// detail/socket_types.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp
index db6cb98..0b117ad 100644
--- a/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/solaris_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/solaris_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp b/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp
index 24bec7c..0783ac4 100644
--- a/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/strand_service.hpp
@@ -2,7 +2,7 @@
// detail/strand_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp
index a9a7053..c014855 100644
--- a/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/task_io_service.hpp
@@ -2,7 +2,7 @@
// detail/task_io_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp
index 24dd11b..b3243b7 100644
--- a/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/task_io_service_fwd.hpp
@@ -2,7 +2,7 @@
// detail/task_io_service_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp b/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp
index e234c07..08164fa 100644
--- a/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/task_io_service_operation.hpp
@@ -2,7 +2,7 @@
// detail/task_io_service_operation.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/thread.hpp b/3rdParty/Boost/src/boost/asio/detail/thread.hpp
index 8848cd0..48cffb1 100644
--- a/3rdParty/Boost/src/boost/asio/detail/thread.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/thread.hpp
@@ -2,7 +2,7 @@
// detail/thread.hpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp b/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp
index 713a196..43bc9c3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/throw_error.hpp
@@ -2,7 +2,7 @@
// detail/throw_error.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp
index 8f82339..24a536c 100644
--- a/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/timer_op.hpp
@@ -2,7 +2,7 @@
// detail/timer_op.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp
index 09eb825..328a9ed 100644
--- a/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue.hpp
@@ -2,7 +2,7 @@
// detail/timer_queue.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp
index 0290308..d493871 100644
--- a/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue_base.hpp
@@ -2,7 +2,7 @@
// detail/timer_queue_base.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp
index 0a62a44..14c6319 100644
--- a/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue_fwd.hpp
@@ -2,7 +2,7 @@
// detail/timer_queue_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp
index c2cea66..549d7e6 100644
--- a/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/timer_queue_set.hpp
@@ -2,7 +2,7 @@
// detail/timer_queue_set.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp
index ec80f40..2edc0c8 100644
--- a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler.hpp
@@ -2,7 +2,7 @@
// detail/timer_scheduler.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp
index 77d6c99..e01b657 100644
--- a/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/timer_scheduler_fwd.hpp
@@ -2,7 +2,7 @@
// detail/timer_scheduler_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp
index 8edf15b..35ed8e2 100644
--- a/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/tss_ptr.hpp
@@ -2,7 +2,7 @@
// detail/tss_ptr.hpp
// ~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp
index e451f19..95be6bd 100644
--- a/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/wait_handler.hpp
@@ -2,7 +2,7 @@
// detail/wait_handler.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp
index 9a14297..81a8b06 100644
--- a/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/weak_ptr.hpp
@@ -2,7 +2,7 @@
// detail/weak_ptr.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_event.hpp b/3rdParty/Boost/src/boost/asio/detail/win_event.hpp
index 736ebb2..63c25c4 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_event.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_event.hpp
@@ -2,7 +2,7 @@
// detail/win_event.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp b/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp
index 4a5d7fa..8636a91 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_fd_set_adapter.hpp
@@ -2,7 +2,7 @@
// detail/win_fd_set_adapter.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp b/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp
index 928395e..769db2e 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_fenced_block.hpp
@@ -2,7 +2,7 @@
// detail/win_fenced_block.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp
index f1a9b1f..5edffa3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_read_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_handle_read_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp
index 291a06f..86c4391 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_service.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_handle_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp
index 971f174..574dc22 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_handle_write_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_handle_write_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp
index 235424e..4c88e7b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_io_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp
index 1357603..b6da9ec 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_io_service_fwd.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_io_service_fwd.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp
index ed1c28f..b3ecbbd 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_null_buffers_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_null_buffers_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp
index c9b3041..3963479 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_operation.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_operation.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp
index 911449d..149eaa5 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_overlapped_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp
index 5589c11..c560bc3 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_overlapped_ptr.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_overlapped_ptr.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp
index a0caa69..8b543d2 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_serial_port_service.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_serial_port_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp
index 89dff0c..ecc1f2d 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_accept_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_socket_accept_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp
index 98d7e99..61d053c 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recv_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_socket_recv_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp
index eca34df..6b364ee 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_socket_recvfrom_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp
index 2dcb4af..33bd380 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_send_op.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_socket_send_op.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp
index 6f1f2bd..183b74b 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_socket_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp
index 2dd3ba3..32532f9 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_iocp_socket_service_base.hpp
@@ -2,7 +2,7 @@
// detail/win_iocp_socket_service_base.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp b/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp
index 3f6dadb..0c5dc26 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_mutex.hpp
@@ -2,7 +2,7 @@
// detail/win_mutex.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp
index cba546f..4e33bd9 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_thread.hpp
@@ -2,7 +2,7 @@
// detail/win_thread.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp b/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp
index 2c5ee3b..75811c1 100644
--- a/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/win_tss_ptr.hpp
@@ -2,7 +2,7 @@
// detail/win_tss_ptr.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp b/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp
index 82ca544..7f7b1e4 100644
--- a/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/wince_thread.hpp
@@ -2,7 +2,7 @@
// detail/wince_thread.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp b/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp
index ac24b0d..dc50fbf 100644
--- a/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/winsock_init.hpp
@@ -2,7 +2,7 @@
// detail/winsock_init.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp b/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp
index 9645b64..b326847 100644
--- a/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp
+++ b/3rdParty/Boost/src/boost/asio/detail/wrapped_handler.hpp
@@ -2,7 +2,7 @@
// detail/wrapped_handler.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/error.hpp b/3rdParty/Boost/src/boost/asio/error.hpp
index 569ad80..d0287a0 100644
--- a/3rdParty/Boost/src/boost/asio/error.hpp
+++ b/3rdParty/Boost/src/boost/asio/error.hpp
@@ -2,7 +2,7 @@
// error.hpp
// ~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp b/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp
index 179f75e..ca56871 100644
--- a/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp
+++ b/3rdParty/Boost/src/boost/asio/handler_alloc_hook.hpp
@@ -2,7 +2,7 @@
// handler_alloc_hook.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp b/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp
index f997f11..f4f6831 100644
--- a/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp
+++ b/3rdParty/Boost/src/boost/asio/handler_invoke_hook.hpp
@@ -2,7 +2,7 @@
// handler_invoke_hook.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/error.ipp b/3rdParty/Boost/src/boost/asio/impl/error.ipp
index 708654e..7c045c0 100644
--- a/3rdParty/Boost/src/boost/asio/impl/error.ipp
+++ b/3rdParty/Boost/src/boost/asio/impl/error.ipp
@@ -2,7 +2,7 @@
// impl/error.ipp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/io_service.hpp b/3rdParty/Boost/src/boost/asio/impl/io_service.hpp
index 3c082cb..152f983 100644
--- a/3rdParty/Boost/src/boost/asio/impl/io_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/impl/io_service.hpp
@@ -2,7 +2,7 @@
// impl/io_service.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/io_service.ipp b/3rdParty/Boost/src/boost/asio/impl/io_service.ipp
index 731adb8..a0b34af 100644
--- a/3rdParty/Boost/src/boost/asio/impl/io_service.ipp
+++ b/3rdParty/Boost/src/boost/asio/impl/io_service.ipp
@@ -2,7 +2,7 @@
// impl/io_service.ipp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/read.hpp b/3rdParty/Boost/src/boost/asio/impl/read.hpp
index 6f9842c..9fba190 100644
--- a/3rdParty/Boost/src/boost/asio/impl/read.hpp
+++ b/3rdParty/Boost/src/boost/asio/impl/read.hpp
@@ -2,7 +2,7 @@
// impl/read.hpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/read_at.hpp b/3rdParty/Boost/src/boost/asio/impl/read_at.hpp
index f6ea0b3..dcf2c33 100644
--- a/3rdParty/Boost/src/boost/asio/impl/read_at.hpp
+++ b/3rdParty/Boost/src/boost/asio/impl/read_at.hpp
@@ -2,7 +2,7 @@
// impl/read_at.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/read_until.hpp b/3rdParty/Boost/src/boost/asio/impl/read_until.hpp
index 73f8773..5eeb1bc 100644
--- a/3rdParty/Boost/src/boost/asio/impl/read_until.hpp
+++ b/3rdParty/Boost/src/boost/asio/impl/read_until.hpp
@@ -2,7 +2,7 @@
// impl/read_until.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp
index 2b291f3..c75f8c2 100644
--- a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.hpp
@@ -2,7 +2,7 @@
// impl/serial_port_base.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp
index 2bfe58a..c665ac8 100644
--- a/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp
+++ b/3rdParty/Boost/src/boost/asio/impl/serial_port_base.ipp
@@ -2,7 +2,7 @@
// impl/serial_port_base.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/impl/write.hpp b/3rdParty/Boost/src/boost/asio/impl/write.hpp
index fa2982a..ae420bc 100644
--- a/3rdParty/Boost/src/boost/asio/impl/write.hpp
+++ b/3rdParty/Boost/src/boost/asio/impl/write.hpp
@@ -2,7 +2,7 @@
// impl/write.hpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/impl/write_at.hpp b/3rdParty/Boost/src/boost/asio/impl/write_at.hpp
index aad64ef..39dc1af 100644
--- a/3rdParty/Boost/src/boost/asio/impl/write_at.hpp
+++ b/3rdParty/Boost/src/boost/asio/impl/write_at.hpp
@@ -2,7 +2,7 @@
// impl/write_at.hpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/io_service.hpp b/3rdParty/Boost/src/boost/asio/io_service.hpp
index 9350a84..a6a27fa 100644
--- a/3rdParty/Boost/src/boost/asio/io_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/io_service.hpp
@@ -2,7 +2,7 @@
// io_service.hpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/address.hpp b/3rdParty/Boost/src/boost/asio/ip/address.hpp
index 8cc3a4b..4ecae7a 100644
--- a/3rdParty/Boost/src/boost/asio/ip/address.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/address.hpp
@@ -2,7 +2,7 @@
// ip/address.hpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp b/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp
index 21c1a7f..5728a17 100644
--- a/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/address_v4.hpp
@@ -2,7 +2,7 @@
// ip/address_v4.hpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp b/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp
index 7165eac..9155bea 100644
--- a/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/address_v6.hpp
@@ -2,7 +2,7 @@
// ip/address_v6.hpp
// ~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp
index 10459c4..0047adc 100644
--- a/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/basic_endpoint.hpp
@@ -2,7 +2,7 @@
// ip/basic_endpoint.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp
index 21b83da..f27515a 100644
--- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver.hpp
@@ -2,7 +2,7 @@
// ip/basic_resolver.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp
index 84589b5..980b488 100644
--- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_entry.hpp
@@ -2,7 +2,7 @@
// ip/basic_resolver_entry.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp
index de42699..465c278 100644
--- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_iterator.hpp
@@ -2,7 +2,7 @@
// ip/basic_resolver_iterator.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp
index 38cba01..8fd63bc 100644
--- a/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/basic_resolver_query.hpp
@@ -2,7 +2,7 @@
// ip/basic_resolver_query.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp b/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp
index 9823e72..fe95a00 100644
--- a/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/detail/endpoint.hpp
@@ -2,7 +2,7 @@
// ip/detail/endpoint.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp b/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp
index 4a6e395..0443d38 100644
--- a/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp
+++ b/3rdParty/Boost/src/boost/asio/ip/detail/impl/endpoint.ipp
@@ -2,7 +2,7 @@
// ip/detail/impl/endpoint.ipp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp b/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp
index 59ce6c3..6fde8c3 100644
--- a/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/detail/socket_option.hpp
@@ -2,7 +2,7 @@
// detail/socket_option.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/host_name.hpp b/3rdParty/Boost/src/boost/asio/ip/host_name.hpp
index f40a9df..33860c9 100644
--- a/3rdParty/Boost/src/boost/asio/ip/host_name.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/host_name.hpp
@@ -2,7 +2,7 @@
// ip/host_name.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/icmp.hpp b/3rdParty/Boost/src/boost/asio/ip/icmp.hpp
index ca5d434..14bb944 100644
--- a/3rdParty/Boost/src/boost/asio/ip/icmp.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/icmp.hpp
@@ -2,7 +2,7 @@
// ip/icmp.hpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp
index c19d25d..94dfb17 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/address.hpp
@@ -2,7 +2,7 @@
// ip/impl/address.hpp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp
index 70513b7..11f06fc 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/address.ipp
@@ -2,7 +2,7 @@
// ip/impl/address.ipp
// ~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp
index 7e798e8..d27d48d 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.hpp
@@ -2,7 +2,7 @@
// ip/impl/address_v4.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp
index 3cdcbf1..8bdef19 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v4.ipp
@@ -2,7 +2,7 @@
// ip/impl/address_v4.ipp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -141,7 +141,7 @@ bool address_v4::is_multicast() const
address_v4 address_v4::broadcast(const address_v4& addr, const address_v4& mask)
{
- return address_v4(addr.to_ulong() | ~mask.to_ulong());
+ return address_v4(addr.to_ulong() | (mask.to_ulong() ^ 0xFFFFFFFF));
}
address_v4 address_v4::netmask(const address_v4& addr)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp
index 8b39e3e..11e1797 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.hpp
@@ -2,7 +2,7 @@
// ip/impl/address_v6.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp
index a06dfe5..5a3dddd 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/address_v6.ipp
@@ -2,7 +2,7 @@
// ip/impl/address_v6.ipp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp b/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp
index 474c193..9d39c87 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/basic_endpoint.hpp
@@ -2,7 +2,7 @@
// ip/impl/basic_endpoint.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp b/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp
index a5ba582..734341e 100644
--- a/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp
+++ b/3rdParty/Boost/src/boost/asio/ip/impl/host_name.ipp
@@ -2,7 +2,7 @@
// ip/impl/host_name.ipp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/multicast.hpp b/3rdParty/Boost/src/boost/asio/ip/multicast.hpp
index e4d9f88..2a02627 100644
--- a/3rdParty/Boost/src/boost/asio/ip/multicast.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/multicast.hpp
@@ -2,7 +2,7 @@
// ip/multicast.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp b/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp
index 0173e11..96ad512 100644
--- a/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/resolver_query_base.hpp
@@ -2,7 +2,7 @@
// ip/resolver_query_base.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp b/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp
index b13e0ad..db0554b 100644
--- a/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/resolver_service.hpp
@@ -2,7 +2,7 @@
// ip/resolver_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/tcp.hpp b/3rdParty/Boost/src/boost/asio/ip/tcp.hpp
index 2026148..4163a8d 100644
--- a/3rdParty/Boost/src/boost/asio/ip/tcp.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/tcp.hpp
@@ -2,7 +2,7 @@
// ip/tcp.hpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/udp.hpp b/3rdParty/Boost/src/boost/asio/ip/udp.hpp
index 4d78692..40f5d3a 100644
--- a/3rdParty/Boost/src/boost/asio/ip/udp.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/udp.hpp
@@ -2,7 +2,7 @@
// ip/udp.hpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/unicast.hpp b/3rdParty/Boost/src/boost/asio/ip/unicast.hpp
index 1f331de..dc7d8e9 100644
--- a/3rdParty/Boost/src/boost/asio/ip/unicast.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/unicast.hpp
@@ -2,7 +2,7 @@
// ip/unicast.hpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp b/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp
index e9aab31..e67a548 100644
--- a/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp
+++ b/3rdParty/Boost/src/boost/asio/ip/v6_only.hpp
@@ -2,7 +2,7 @@
// ip/v6_only.hpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp b/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp
index e429e6d..1aac50f 100644
--- a/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp
+++ b/3rdParty/Boost/src/boost/asio/is_read_buffered.hpp
@@ -2,7 +2,7 @@
// is_read_buffered.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp b/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp
index fff68d6..03de0f1 100644
--- a/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp
+++ b/3rdParty/Boost/src/boost/asio/is_write_buffered.hpp
@@ -2,7 +2,7 @@
// is_write_buffered.hpp
// ~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp b/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp
index 2cd93f6..fcb53a0 100644
--- a/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp
+++ b/3rdParty/Boost/src/boost/asio/local/basic_endpoint.hpp
@@ -2,7 +2,7 @@
// local/basic_endpoint.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Derived from a public domain implementation written by Daniel Casimiro.
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp b/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp
index cb08777..9ef6cd3 100644
--- a/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp
+++ b/3rdParty/Boost/src/boost/asio/local/connect_pair.hpp
@@ -2,7 +2,7 @@
// local/connect_pair.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp b/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp
index 2d78773..eaa0241 100644
--- a/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp
+++ b/3rdParty/Boost/src/boost/asio/local/datagram_protocol.hpp
@@ -2,7 +2,7 @@
// local/datagram_protocol.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp b/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp
index 5fb7297..c527793 100644
--- a/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp
+++ b/3rdParty/Boost/src/boost/asio/local/detail/endpoint.hpp
@@ -2,7 +2,7 @@
// local/detail/endpoint.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Derived from a public domain implementation written by Daniel Casimiro.
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp b/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp
index ffbc44e..a4c1e56 100644
--- a/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp
+++ b/3rdParty/Boost/src/boost/asio/local/detail/impl/endpoint.ipp
@@ -2,7 +2,7 @@
// local/detail/impl/endpoint.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Derived from a public domain implementation written by Daniel Casimiro.
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp b/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp
index 723c348..e8692c5 100644
--- a/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp
+++ b/3rdParty/Boost/src/boost/asio/local/stream_protocol.hpp
@@ -2,7 +2,7 @@
// local/stream_protocol.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/placeholders.hpp b/3rdParty/Boost/src/boost/asio/placeholders.hpp
index 2940eda..19ddb66 100644
--- a/3rdParty/Boost/src/boost/asio/placeholders.hpp
+++ b/3rdParty/Boost/src/boost/asio/placeholders.hpp
@@ -2,7 +2,7 @@
// placeholders.hpp
// ~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -39,7 +39,7 @@ unspecified bytes_transferred;
/// An argument placeholder, for use with boost::bind(), that corresponds to
/// the iterator argument of a handler for asynchronous functions such as
-/// boost::asio::basic_resolver::resolve.
+/// boost::asio::basic_resolver::async_resolve.
unspecified iterator;
#elif defined(__BORLANDC__) || defined(__GNUC__)
diff --git a/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp b/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp
index 56ec9d8..cf953db 100644
--- a/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp
+++ b/3rdParty/Boost/src/boost/asio/posix/basic_descriptor.hpp
@@ -2,7 +2,7 @@
// posix/basic_descriptor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp b/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp
index 0f70604..ee08567 100644
--- a/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp
+++ b/3rdParty/Boost/src/boost/asio/posix/basic_stream_descriptor.hpp
@@ -2,7 +2,7 @@
// posix/basic_stream_descriptor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp b/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp
index 70bac63..2e5cb47 100644
--- a/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/posix/descriptor_base.hpp
@@ -2,7 +2,7 @@
// posix/descriptor_base.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp
index 30b7e37..22551ab 100644
--- a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp
+++ b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor.hpp
@@ -2,7 +2,7 @@
// posix/stream_descriptor.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp
index c2034da..c582b8e 100644
--- a/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/posix/stream_descriptor_service.hpp
@@ -2,7 +2,7 @@
// posix/stream_descriptor_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp b/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp
index 0db83b6..783c4c2 100644
--- a/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/raw_socket_service.hpp
@@ -2,7 +2,7 @@
// raw_socket_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/read.hpp b/3rdParty/Boost/src/boost/asio/read.hpp
index d2339d5..fd13e75 100644
--- a/3rdParty/Boost/src/boost/asio/read.hpp
+++ b/3rdParty/Boost/src/boost/asio/read.hpp
@@ -2,7 +2,7 @@
// read.hpp
// ~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/read_at.hpp b/3rdParty/Boost/src/boost/asio/read_at.hpp
index 27bad65..1feba6c 100644
--- a/3rdParty/Boost/src/boost/asio/read_at.hpp
+++ b/3rdParty/Boost/src/boost/asio/read_at.hpp
@@ -2,7 +2,7 @@
// read_at.hpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/read_until.hpp b/3rdParty/Boost/src/boost/asio/read_until.hpp
index aa9d2ba..546537b 100644
--- a/3rdParty/Boost/src/boost/asio/read_until.hpp
+++ b/3rdParty/Boost/src/boost/asio/read_until.hpp
@@ -2,7 +2,7 @@
// read_until.hpp
// ~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/serial_port.hpp b/3rdParty/Boost/src/boost/asio/serial_port.hpp
index 9775739..a2f1721 100644
--- a/3rdParty/Boost/src/boost/asio/serial_port.hpp
+++ b/3rdParty/Boost/src/boost/asio/serial_port.hpp
@@ -2,7 +2,7 @@
// serial_port.hpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/serial_port_base.hpp b/3rdParty/Boost/src/boost/asio/serial_port_base.hpp
index a050df2..083d006 100644
--- a/3rdParty/Boost/src/boost/asio/serial_port_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/serial_port_base.hpp
@@ -2,7 +2,7 @@
// serial_port_base.hpp
// ~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
diff --git a/3rdParty/Boost/src/boost/asio/serial_port_service.hpp b/3rdParty/Boost/src/boost/asio/serial_port_service.hpp
index b1c8301..1a8a11b 100644
--- a/3rdParty/Boost/src/boost/asio/serial_port_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/serial_port_service.hpp
@@ -2,7 +2,7 @@
// serial_port_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp b/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp
index 3f7436b..f287c65 100644
--- a/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/socket_acceptor_service.hpp
@@ -2,7 +2,7 @@
// socket_acceptor_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/socket_base.hpp b/3rdParty/Boost/src/boost/asio/socket_base.hpp
index 083ffb6..f5bac91 100644
--- a/3rdParty/Boost/src/boost/asio/socket_base.hpp
+++ b/3rdParty/Boost/src/boost/asio/socket_base.hpp
@@ -2,7 +2,7 @@
// socket_base.hpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/strand.hpp b/3rdParty/Boost/src/boost/asio/strand.hpp
index e085030..2928167 100644
--- a/3rdParty/Boost/src/boost/asio/strand.hpp
+++ b/3rdParty/Boost/src/boost/asio/strand.hpp
@@ -2,7 +2,7 @@
// strand.hpp
// ~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp b/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp
index 101eacb..40d5e18 100644
--- a/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/stream_socket_service.hpp
@@ -2,7 +2,7 @@
// stream_socket_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/streambuf.hpp b/3rdParty/Boost/src/boost/asio/streambuf.hpp
index 30196ad..8f724c3 100644
--- a/3rdParty/Boost/src/boost/asio/streambuf.hpp
+++ b/3rdParty/Boost/src/boost/asio/streambuf.hpp
@@ -2,7 +2,7 @@
// streambuf.hpp
// ~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/time_traits.hpp b/3rdParty/Boost/src/boost/asio/time_traits.hpp
index 9043d7d..0da7e6b 100644
--- a/3rdParty/Boost/src/boost/asio/time_traits.hpp
+++ b/3rdParty/Boost/src/boost/asio/time_traits.hpp
@@ -2,7 +2,7 @@
// time_traits.hpp
// ~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/version.hpp b/3rdParty/Boost/src/boost/asio/version.hpp
index 20858bf..9ef5ab5 100644
--- a/3rdParty/Boost/src/boost/asio/version.hpp
+++ b/3rdParty/Boost/src/boost/asio/version.hpp
@@ -2,7 +2,7 @@
// version.hpp
// ~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
@@ -18,6 +18,6 @@
// BOOST_ASIO_VERSION % 100 is the sub-minor version
// BOOST_ASIO_VERSION / 100 % 1000 is the minor version
// BOOST_ASIO_VERSION / 100000 is the major version
-#define BOOST_ASIO_VERSION 100407 // 1.4.7
+#define BOOST_ASIO_VERSION 100409 // 1.4.9
#endif // BOOST_ASIO_VERSION_HPP
diff --git a/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp
index 58bb54d..aedd79a 100644
--- a/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/basic_handle.hpp
@@ -2,7 +2,7 @@
// windows/basic_handle.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp
index 5c403d0..207e414 100644
--- a/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/basic_random_access_handle.hpp
@@ -2,7 +2,7 @@
// windows/basic_random_access_handle.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp
index 340e402..105b041 100644
--- a/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/basic_stream_handle.hpp
@@ -2,7 +2,7 @@
// windows/basic_stream_handle.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp b/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp
index 24a199f..c9b1889 100644
--- a/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/overlapped_ptr.hpp
@@ -2,7 +2,7 @@
// windows/overlapped_ptr.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp
index 03d7055..183ad0d 100644
--- a/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/random_access_handle.hpp
@@ -2,7 +2,7 @@
// windows/random_access_handle.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp b/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp
index e5a2e11..08cb561 100644
--- a/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/random_access_handle_service.hpp
@@ -2,7 +2,7 @@
// windows/random_access_handle_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp b/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp
index ca2a56c..67f6452 100644
--- a/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/stream_handle.hpp
@@ -2,7 +2,7 @@
// windows/stream_handle.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp b/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp
index e534646..418ea1e 100644
--- a/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp
+++ b/3rdParty/Boost/src/boost/asio/windows/stream_handle_service.hpp
@@ -2,7 +2,7 @@
// windows/stream_handle_service.hpp
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/write.hpp b/3rdParty/Boost/src/boost/asio/write.hpp
index 0ec0879..537a8d6 100644
--- a/3rdParty/Boost/src/boost/asio/write.hpp
+++ b/3rdParty/Boost/src/boost/asio/write.hpp
@@ -2,7 +2,7 @@
// write.hpp
// ~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/asio/write_at.hpp b/3rdParty/Boost/src/boost/asio/write_at.hpp
index a078a70..9c0c575 100644
--- a/3rdParty/Boost/src/boost/asio/write_at.hpp
+++ b/3rdParty/Boost/src/boost/asio/write_at.hpp
@@ -2,7 +2,7 @@
// write_at.hpp
// ~~~~~~~~~~~~
//
-// Copyright (c) 2003-2010 Christopher M. Kohlhoff (chris at kohlhoff dot com)
+// 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)
diff --git a/3rdParty/Boost/src/boost/assert.hpp b/3rdParty/Boost/src/boost/assert.hpp
index c227f17..174f084 100644
--- a/3rdParty/Boost/src/boost/assert.hpp
+++ b/3rdParty/Boost/src/boost/assert.hpp
@@ -1,8 +1,11 @@
//
// boost/assert.hpp - BOOST_ASSERT(expr)
+// BOOST_ASSERT_MSG(expr, msg)
+// BOOST_VERIFY(expr)
//
// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
// Copyright (c) 2007 Peter Dimov
+// Copyright (c) Beman Dawes 2011
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
@@ -13,6 +16,16 @@
// See http://www.boost.org/libs/utility/assert.html for documentation.
//
+//
+// Stop inspect complaining about use of 'assert':
+//
+// boostinspect:naassert_macro
+//
+
+//--------------------------------------------------------------------------------------//
+// BOOST_ASSERT //
+//--------------------------------------------------------------------------------------//
+
#undef BOOST_ASSERT
#if defined(BOOST_DISABLE_ASSERTS)
@@ -25,18 +38,86 @@
namespace boost
{
-
-void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined
-
+ void assertion_failed(char const * expr,
+ char const * function, char const * file, long line); // user defined
} // namespace boost
-#define BOOST_ASSERT(expr) ((expr)? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+#define BOOST_ASSERT(expr) ((expr) \
+ ? ((void)0) \
+ : ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
#else
# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
# define BOOST_ASSERT(expr) assert(expr)
#endif
+//--------------------------------------------------------------------------------------//
+// BOOST_ASSERT_MSG //
+//--------------------------------------------------------------------------------------//
+
+# undef BOOST_ASSERT_MSG
+
+#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG)
+
+ #define BOOST_ASSERT_MSG(expr, msg) ((void)0)
+
+#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
+
+ #include <boost/current_function.hpp>
+
+ namespace boost
+ {
+ void assertion_failed_msg(char const * expr, char const * msg,
+ char const * function, char const * file, long line); // user defined
+ } // namespace boost
+
+ #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
+ ? ((void)0) \
+ : ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+
+#else
+ #ifndef BOOST_ASSERT_HPP
+ #define BOOST_ASSERT_HPP
+ #include <cstdlib>
+ #include <iostream>
+ #include <boost/current_function.hpp>
+
+ // IDE's like Visual Studio perform better if output goes to std::cout or
+ // some other stream, so allow user to configure output stream:
+ #ifndef BOOST_ASSERT_MSG_OSTREAM
+ # define BOOST_ASSERT_MSG_OSTREAM std::cerr
+ #endif
+
+ namespace boost
+ {
+ namespace assertion
+ {
+ namespace detail
+ {
+ inline void assertion_failed_msg(char const * expr, char const * msg, char const * function,
+ char const * file, long line)
+ {
+ BOOST_ASSERT_MSG_OSTREAM
+ << "***** Internal Program Error - assertion (" << expr << ") failed in "
+ << function << ":\n"
+ << file << '(' << line << "): " << msg << std::endl;
+ std::abort();
+ }
+ } // detail
+ } // assertion
+ } // detail
+ #endif
+
+ #define BOOST_ASSERT_MSG(expr, msg) ((expr) \
+ ? ((void)0) \
+ : ::boost::assertion::detail::assertion_failed_msg(#expr, msg, \
+ BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
+#endif
+
+//--------------------------------------------------------------------------------------//
+// BOOST_VERIFY //
+//--------------------------------------------------------------------------------------//
+
#undef BOOST_VERIFY
#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
diff --git a/3rdParty/Boost/src/boost/concept_check.hpp b/3rdParty/Boost/src/boost/concept_check.hpp
index 58bd8b2..01b2f4e 100644
--- a/3rdParty/Boost/src/boost/concept_check.hpp
+++ b/3rdParty/Boost/src/boost/concept_check.hpp
@@ -38,14 +38,14 @@ namespace boost
//
// Backward compatibility
//
-
+
template <class Model>
inline void function_requires(Model* = 0)
{
BOOST_CONCEPT_ASSERT((Model));
- }
+ }
template <class T> inline void ignore_unused_variable_warning(T const&) {}
-
+
# define BOOST_CLASS_REQUIRE(type_var, ns, concept) \
BOOST_CONCEPT_ASSERT((ns::concept<type_var>))
@@ -58,20 +58,21 @@ namespace boost
# define BOOST_CLASS_REQUIRE4(tv1, tv2, tv3, tv4, ns, concept) \
BOOST_CONCEPT_ASSERT((ns::concept<tv1,tv2,tv3,tv4>))
-
+
//
// Begin concept definitions
//
BOOST_concept(Integer, (T))
{
BOOST_CONCEPT_USAGE(Integer)
- {
+ {
x.error_type_must_be_an_integer_type();
}
private:
T x;
};
+ template <> struct Integer<char> {};
template <> struct Integer<signed char> {};
template <> struct Integer<unsigned char> {};
template <> struct Integer<short> {};
@@ -89,7 +90,7 @@ namespace boost
# endif
BOOST_concept(SignedInteger,(T)) {
- BOOST_CONCEPT_USAGE(SignedInteger) {
+ BOOST_CONCEPT_USAGE(SignedInteger) {
x.error_type_must_be_a_signed_integer_type();
}
private:
@@ -103,16 +104,16 @@ namespace boost
template <> struct SignedInteger< ::boost::long_long_type> {};
# elif defined(BOOST_HAS_MS_INT64)
template <> struct SignedInteger<__int64> {};
-# endif
+# endif
BOOST_concept(UnsignedInteger,(T)) {
- BOOST_CONCEPT_USAGE(UnsignedInteger) {
+ BOOST_CONCEPT_USAGE(UnsignedInteger) {
x.error_type_must_be_an_unsigned_integer_type();
}
private:
T x;
};
-
+
template <> struct UnsignedInteger<unsigned char> {};
template <> struct UnsignedInteger<unsigned short> {};
template <> struct UnsignedInteger<unsigned int> {};
@@ -138,23 +139,24 @@ namespace boost
{
BOOST_CONCEPT_USAGE(Assignable) {
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = a; // require assignment operator
+ a = b; // require assignment operator
#endif
- const_constraints(a);
+ const_constraints(b);
}
private:
- void const_constraints(const TT& b) {
+ void const_constraints(const TT& x) {
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = b; // const required for argument to assignment
+ a = x; // const required for argument to assignment
#else
- ignore_unused_variable_warning(b);
+ ignore_unused_variable_warning(x);
#endif
}
private:
TT a;
+ TT b;
};
-
+
BOOST_concept(CopyConstructible,(TT))
{
BOOST_CONCEPT_USAGE(CopyConstructible) {
@@ -182,22 +184,23 @@ namespace boost
BOOST_concept(SGIAssignable,(TT))
{
BOOST_CONCEPT_USAGE(SGIAssignable) {
- TT b(a);
+ TT c(a);
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = a; // require assignment operator
+ a = b; // require assignment operator
#endif
- const_constraints(a);
- ignore_unused_variable_warning(b);
+ const_constraints(b);
+ ignore_unused_variable_warning(c);
}
private:
- void const_constraints(const TT& b) {
- TT c(b);
+ void const_constraints(const TT& x) {
+ TT c(x);
#if !defined(_ITERATOR_) // back_insert_iterator broken for VC++ STL
- a = b; // const required for argument to assignment
+ a = x; // const required for argument to assignment
#endif
ignore_unused_variable_warning(c);
}
TT a;
+ TT b;
};
#if (defined _MSC_VER)
# pragma warning( pop )
@@ -299,7 +302,7 @@ namespace boost
BOOST_concept(Generator,(Func)(Return))
{
BOOST_CONCEPT_USAGE(Generator) { test(is_void<Return>()); }
-
+
private:
void test(boost::mpl::false_)
{
@@ -312,22 +315,22 @@ namespace boost
{
f();
}
-
+
Func f;
};
BOOST_concept(UnaryFunction,(Func)(Return)(Arg))
{
BOOST_CONCEPT_USAGE(UnaryFunction) { test(is_void<Return>()); }
-
+
private:
void test(boost::mpl::false_)
{
f(arg); // "priming the pump" this way keeps msvc6 happy (ICE)
Return r = f(arg);
- ignore_unused_variable_warning(r);
+ ignore_unused_variable_warning(r);
}
-
+
void test(boost::mpl::true_)
{
f(arg);
@@ -356,12 +359,21 @@ namespace boost
Return r = f(first, second); // require operator()
(void)r;
}
-
+
void test(boost::mpl::true_)
{
f(first,second);
}
-
+
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::BinaryFunction<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ BinaryFunction();
+#endif
+
Func f;
First first;
Second second;
@@ -373,6 +385,15 @@ namespace boost
require_boolean_expr(f(arg)); // require operator() returning bool
}
private:
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::UnaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ UnaryPredicate();
+#endif
+
Func f;
Arg arg;
};
@@ -383,6 +404,14 @@ namespace boost
require_boolean_expr(f(a, b)); // require operator() returning bool
}
private:
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::BinaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ BinaryPredicate();
+#endif
Func f;
First a;
Second b;
@@ -392,7 +421,7 @@ namespace boost
BOOST_concept(Const_BinaryPredicate,(Func)(First)(Second))
: BinaryPredicate<Func, First, Second>
{
- BOOST_CONCEPT_USAGE(Const_BinaryPredicate) {
+ BOOST_CONCEPT_USAGE(Const_BinaryPredicate) {
const_constraints(f);
}
private:
@@ -400,6 +429,15 @@ namespace boost
// operator() must be a const member function
require_boolean_expr(fun(a, b));
}
+#if (BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4) \
+ && BOOST_WORKAROUND(__GNUC__, > 3)))
+ // Declare a dummy constructor to make gcc happy.
+ // It seems the compiler can not generate a sensible constructor when this is instantiated with a refence type.
+ // (warning: non-static reference "const double& boost::Const_BinaryPredicate<YourClassHere>::arg"
+ // in class without a constructor [-Wuninitialized])
+ Const_BinaryPredicate();
+#endif
+
Func f;
First a;
Second b;
@@ -409,7 +447,7 @@ namespace boost
: Generator<Func, typename Func::result_type>
{
typedef typename Func::result_type result_type;
-
+
BOOST_CONCEPT_USAGE(AdaptableGenerator)
{
BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
@@ -440,7 +478,7 @@ namespace boost
typedef typename Func::first_argument_type first_argument_type;
typedef typename Func::second_argument_type second_argument_type;
typedef typename Func::result_type result_type;
-
+
~AdaptableBinaryFunction()
{
BOOST_CONCEPT_ASSERT((Convertible<result_type, Return>));
@@ -478,7 +516,7 @@ namespace boost
{
BOOST_CONCEPT_ASSERT((SignedInteger<difference_type>));
BOOST_CONCEPT_ASSERT((Convertible<iterator_category, std::input_iterator_tag>));
-
+
TT j(i);
(void)*i; // require dereference operator
++j; // require preincrement operator
@@ -492,7 +530,7 @@ namespace boost
: Assignable<TT>
{
BOOST_CONCEPT_USAGE(OutputIterator) {
-
+
++i; // require preincrement operator
i++; // require postincrement operator
*i++ = t; // require postincrement and assignment
@@ -511,11 +549,11 @@ namespace boost
BOOST_DEDUCED_TYPENAME ForwardIterator::iterator_category
, std::forward_iterator_tag
>));
-
+
typename InputIterator<TT>::reference r = *i;
ignore_unused_variable_warning(r);
}
-
+
private:
TT i;
};
@@ -577,7 +615,7 @@ namespace boost
n = i - j; // require difference operator
(void)i[n]; // require element access operator
}
-
+
private:
TT a, b;
TT i, j;
@@ -615,7 +653,7 @@ namespace boost
BOOST_CONCEPT_ASSERT((InputIterator<const_iterator>));
const_constraints(c);
}
-
+
private:
void const_constraints(const C& cc) {
i = cc.begin();
@@ -636,19 +674,19 @@ namespace boost
typedef typename C::reference reference;
typedef typename C::iterator iterator;
typedef typename C::pointer pointer;
-
+
BOOST_CONCEPT_USAGE(Mutable_Container)
{
BOOST_CONCEPT_ASSERT((
Assignable<typename Mutable_Container::value_type>));
-
+
BOOST_CONCEPT_ASSERT((InputIterator<iterator>));
-
+
i = c.begin();
i = c.end();
c.swap(c2);
}
-
+
private:
iterator i;
C c, c2;
@@ -664,7 +702,7 @@ namespace boost
typename ForwardContainer::const_iterator
>));
}
- };
+ };
BOOST_concept(Mutable_ForwardContainer,(C))
: ForwardContainer<C>
@@ -677,7 +715,7 @@ namespace boost
typename Mutable_ForwardContainer::iterator
>));
}
- };
+ };
BOOST_concept(ReversibleContainer,(C))
: ForwardContainer<C>
@@ -691,9 +729,9 @@ namespace boost
BOOST_CONCEPT_ASSERT((
BidirectionalIterator<
typename ReversibleContainer::const_iterator>));
-
+
BOOST_CONCEPT_ASSERT((BidirectionalIterator<const_reverse_iterator>));
-
+
const_constraints(c);
}
private:
@@ -710,17 +748,17 @@ namespace boost
, ReversibleContainer<C>
{
typedef typename C::reverse_iterator reverse_iterator;
-
+
BOOST_CONCEPT_USAGE(Mutable_ReversibleContainer)
{
typedef typename Mutable_ForwardContainer<C>::iterator iterator;
BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<iterator>));
BOOST_CONCEPT_ASSERT((Mutable_BidirectionalIterator<reverse_iterator>));
-
+
reverse_iterator i = c.rbegin();
i = c.rend();
}
- private:
+ private:
C c;
};
@@ -736,7 +774,7 @@ namespace boost
RandomAccessIterator<
typename RandomAccessContainer::const_iterator
>));
-
+
const_constraints(c);
}
private:
@@ -745,7 +783,7 @@ namespace boost
const_reference r = cc[n];
ignore_unused_variable_warning(r);
}
-
+
C c;
size_type n;
};
@@ -761,11 +799,11 @@ namespace boost
{
BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::iterator>));
BOOST_CONCEPT_ASSERT((Mutable_RandomAccessIterator<typename self::reverse_iterator>));
-
+
typename self::reference r = c[i];
ignore_unused_variable_warning(r);
}
-
+
private:
typename Mutable_ReversibleContainer<C>::size_type i;
C c;
@@ -781,7 +819,7 @@ namespace boost
{
BOOST_CONCEPT_USAGE(Sequence)
{
- S
+ S
c(n),
c2(n, t),
c3(first, last);
@@ -806,7 +844,7 @@ namespace boost
typename Sequence::const_reference r = c.front();
ignore_unused_variable_warning(r);
}
-
+
typename S::value_type t;
typename S::size_type n;
typename S::value_type* first, *last;
@@ -865,11 +903,11 @@ namespace boost
c.erase(r.first, r.second);
const_constraints(c);
BOOST_CONCEPT_ASSERT((BinaryPredicate<key_compare,key_type,key_type>));
-
+
typedef typename AssociativeContainer::value_type value_type_;
BOOST_CONCEPT_ASSERT((BinaryPredicate<value_compare,value_type_,value_type_>));
}
-
+
// Redundant with the base concept, but it helps below.
typedef typename C::const_iterator const_iterator;
private:
@@ -895,7 +933,7 @@ namespace boost
BOOST_CONCEPT_USAGE(UniqueAssociativeContainer)
{
C c(first, last);
-
+
pos_flag = c.insert(t);
c.insert(first, last);
@@ -913,7 +951,7 @@ namespace boost
BOOST_CONCEPT_USAGE(MultipleAssociativeContainer)
{
C c(first, last);
-
+
pos = c.insert(t);
c.insert(first, last);
@@ -956,7 +994,7 @@ namespace boost
{
BOOST_CONCEPT_USAGE(SortedAssociativeContainer)
{
- C
+ C
c(kc),
c2(first, last),
c3(first, last, kc);
@@ -964,15 +1002,15 @@ namespace boost
p = c.upper_bound(k);
p = c.lower_bound(k);
r = c.equal_range(k);
-
+
c.insert(p, t);
-
+
ignore_unused_variable_warning(c);
ignore_unused_variable_warning(c2);
ignore_unused_variable_warning(c3);
const_constraints(c);
}
-
+
void const_constraints(const C& c)
{
kc = c.key_comp();
@@ -982,7 +1020,7 @@ namespace boost
cp = c.lower_bound(k);
cr = c.equal_range(k);
}
-
+
private:
typename C::key_compare kc;
typename C::value_compare vc;
diff --git a/3rdParty/Boost/src/boost/config/auto_link.hpp b/3rdParty/Boost/src/boost/config/auto_link.hpp
index e562caf..f5a0a00 100644
--- a/3rdParty/Boost/src/boost/config/auto_link.hpp
+++ b/3rdParty/Boost/src/boost/config/auto_link.hpp
@@ -414,7 +414,4 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
#if defined(BOOST_DYN_LINK)
# undef BOOST_DYN_LINK
#endif
-#if defined(BOOST_AUTO_LINK_NOMANGLE)
-# undef BOOST_AUTO_LINK_NOMANGLE
-#endif
diff --git a/3rdParty/Boost/src/boost/config/compiler/clang.hpp b/3rdParty/Boost/src/boost/config/compiler/clang.hpp
index 2ce6773..0893033 100644
--- a/3rdParty/Boost/src/boost/config/compiler/clang.hpp
+++ b/3rdParty/Boost/src/boost/config/compiler/clang.hpp
@@ -13,8 +13,7 @@
# define BOOST_NO_EXCEPTIONS
#endif
-#if __has_feature(cxx_rtti)
-#else
+#if !__has_feature(cxx_rtti)
# define BOOST_NO_RTTI
#endif
@@ -24,35 +23,57 @@
#define BOOST_HAS_NRVO
-// NOTE: Clang's C++0x support is not worth detecting. However, it
-// supports both extern templates and "long long" even in C++98/03
-// mode.
+// Clang supports "long long" in all compilation modes.
+
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
#define BOOST_NO_CHAR16_T
#define BOOST_NO_CHAR32_T
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
+
+#if !__has_feature(cxx_decltype)
+# define BOOST_NO_DECLTYPE
+#endif
+
#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DELETED_FUNCTIONS
+
+#if !__has_feature(cxx_deleted_functions)
+# define BOOST_NO_DELETED_FUNCTIONS
+#endif
+
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+
+#if !__has_feature(cxx_default_function_template_args)
+ #define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_SCOPED_ENUMS
-#define BOOST_NO_STATIC_ASSERT
+
+#if !__has_feature(cxx_rvalue_references)
+# define BOOST_NO_RVALUE_REFERENCES
+#endif
+
+#if !__has_feature(cxx_strong_enums)
+# define BOOST_NO_SCOPED_ENUMS
+#endif
+
+#if !__has_feature(cxx_static_assert)
+# define BOOST_NO_STATIC_ASSERT
+#endif
+
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
-#define BOOST_NO_VARIADIC_MACROS
-// HACK: Clang does support extern templates, but Boost's test for
-// them is wrong.
-#define BOOST_NO_EXTERN_TEMPLATE
+#if !__has_feature(cxx_variadic_templates)
+# define BOOST_NO_VARIADIC_TEMPLATES
+#endif
+
+// Clang always supports variadic macros
+// Clang always supports extern templates
#ifndef BOOST_COMPILER
# define BOOST_COMPILER "Clang version " __clang_version__
diff --git a/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp b/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp
index 682c73a..9042578 100644
--- a/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp
+++ b/3rdParty/Boost/src/boost/config/compiler/common_edg.hpp
@@ -62,10 +62,13 @@
#if (__EDG_VERSION__ < 310)
# define BOOST_NO_EXTERN_TEMPLATE
#endif
-#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
+#if (__EDG_VERSION__ <= 310)
// No support for initializer lists
# define BOOST_NO_INITIALIZER_LISTS
#endif
+#if (__EDG_VERSION__ < 400)
+# define BOOST_NO_VARIADIC_MACROS
+#endif
#define BOOST_NO_AUTO_DECLARATIONS
#define BOOST_NO_AUTO_MULTIDECLARATIONS
@@ -88,7 +91,6 @@
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
-#define BOOST_NO_VARIADIC_MACROS
#ifdef c_plusplus
// EDG has "long long" in non-strict mode
diff --git a/3rdParty/Boost/src/boost/config/compiler/gcc.hpp b/3rdParty/Boost/src/boost/config/compiler/gcc.hpp
index eeaf998..f633647 100644
--- a/3rdParty/Boost/src/boost/config/compiler/gcc.hpp
+++ b/3rdParty/Boost/src/boost/config/compiler/gcc.hpp
@@ -148,8 +148,6 @@
// C++0x features not implemented in any GCC version
//
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_NULLPTR
#define BOOST_NO_TEMPLATE_ALIASES
// C++0x features in 4.3.n and later
@@ -211,6 +209,13 @@
# define BOOST_NO_UNICODE_LITERALS
#endif
+// C++0x features in 4.5.n and later
+//
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
+#define BOOST_NO_CONSTEXPR
+#define BOOST_NO_NULLPTR
+#endif
+
// ConceptGCC compiler:
// http://www.generic-programming.org/software/ConceptGCC/
#ifdef __GXX_CONCEPTS__
@@ -231,8 +236,8 @@
# error "Compiler not configured - please reconfigure"
#endif
//
-// last known and checked version is 4.4 (Pre-release):
-#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 4))
+// last known and checked version is 4.6 (Pre-release):
+#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6))
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# else
diff --git a/3rdParty/Boost/src/boost/config/compiler/intel.hpp b/3rdParty/Boost/src/boost/config/compiler/intel.hpp
index e7bc95b..f209ae7 100644
--- a/3rdParty/Boost/src/boost/config/compiler/intel.hpp
+++ b/3rdParty/Boost/src/boost/config/compiler/intel.hpp
@@ -26,7 +26,19 @@
# define BOOST_INTEL_CXX_VERSION __ECC
#endif
+// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x'
+#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && __STDC_HOSTED__) || defined(__GXX_EXPERIMENTAL_CPP0X__)
+# define BOOST_INTEL_STDCXX0X
+#endif
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+# define BOOST_INTEL_STDCXX0X
+#endif
+
+#ifdef BOOST_INTEL_STDCXX0X
+#define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+#else
#define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+#endif
#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
#if defined(_WIN32) || defined(_WIN64)
@@ -99,7 +111,7 @@
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
# endif
#endif
-#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1110)
+#if (defined(__GNUC__) && (__GNUC__ < 4)) || defined(_WIN32) || (BOOST_INTEL_CXX_VERSION <= 1200)
// GCC or VC emulation:
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
#endif
@@ -179,6 +191,32 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
# define BOOST_SYMBOL_IMPORT
# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
#endif
+//
+// C++0x features
+// - ICC added static_assert in 11.0 (first version with C++0x support)
+//
+#if defined(BOOST_INTEL_STDCXX0X)
+# undef BOOST_NO_STATIC_ASSERT
+//
+// These pass our test cases, but aren't officially supported according to:
+// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
+//
+//# undef BOOST_NO_LAMBDAS
+//# undef BOOST_NO_DECLTYPE
+//# undef BOOST_NO_AUTO_DECLARATIONS
+//# undef BOOST_NO_AUTO_MULTIDECLARATIONS
+#endif
+
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200)
+# undef BOOST_NO_RVALUE_REFERENCES
+# undef BOOST_NO_SCOPED_ENUMS
+# undef BOOST_NO_DELETED_FUNCTIONS
+# undef BOOST_NO_DEFAULTED_FUNCTIONS
+# undef BOOST_NO_LAMBDAS
+# undef BOOST_NO_DECLTYPE
+# undef BOOST_NO_AUTO_DECLARATIONS
+# undef BOOST_NO_AUTO_MULTIDECLARATIONS
+#endif
//
// last known and checked version:
diff --git a/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp b/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp
index eaecf37..03203fb 100644
--- a/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp
+++ b/3rdParty/Boost/src/boost/config/compiler/nvcc.hpp
@@ -17,71 +17,12 @@
// Boost support macro for NVCC
// NVCC Basically behaves like some flavor of MSVC6 + some specific quirks
-#define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
-#define BOOST_MSVC6_MEMBER_TEMPLATES
-#define BOOST_HAS_UNISTD_H
-#define BOOST_HAS_STDINT_H
-#define BOOST_HAS_SIGACTION
-#define BOOST_HAS_SCHED_YIELD
-#define BOOST_HAS_PTHREADS
-#define BOOST_HAS_PTHREAD_YIELD
-#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
-#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
-#define BOOST_HAS_NRVO
-#define BOOST_HAS_NL_TYPES_H
-#define BOOST_HAS_NANOSLEEP
-#define BOOST_HAS_LONG_LONG
-#define BOOST_HAS_LOG1P
-#define BOOST_HAS_GETTIMEOFDAY
-#define BOOST_HAS_EXPM1
-#define BOOST_HAS_DIRENT_H
-#define BOOST_HAS_CLOCK_GETTIME
-#define BOOST_NO_VARIADIC_TEMPLATES
-#define BOOST_NO_VARIADIC_MACROS
-#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_TEMPLATE_ALIASES
-#define BOOST_NO_STD_UNORDERED
-#define BOOST_NO_STATIC_ASSERT
-#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_SCOPED_ENUMS
-#define BOOST_NO_RVALUE_REFERENCES
-#define BOOST_NO_RAW_LITERALS
-#define BOOST_NO_NULLPTR
-#define BOOST_NO_LAMBDAS
-#define BOOST_NO_INITIALIZER_LISTS
-#define BOOST_NO_MS_INT64_NUMERIC_LIMITS
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_DELETED_FUNCTIONS
-#define BOOST_NO_DEFAULTED_FUNCTIONS
-#define BOOST_NO_DECLTYPE
-#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_CONCEPTS
-#define BOOST_NO_CHAR32_T
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_0X_HDR_UNORDERED_SET
-#define BOOST_NO_0X_HDR_UNORDERED_MAP
-#define BOOST_NO_0X_HDR_TYPE_TRAITS
-#define BOOST_NO_0X_HDR_TUPLE
-#define BOOST_NO_0X_HDR_THREAD
-#define BOOST_NO_0X_HDR_TYPEINDEX
-#define BOOST_NO_0X_HDR_SYSTEM_ERROR
-#define BOOST_NO_0X_HDR_REGEX
-#define BOOST_NO_0X_HDR_RATIO
-#define BOOST_NO_0X_HDR_RANDOM
-#define BOOST_NO_0X_HDR_MUTEX
-#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
-#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
-#define BOOST_NO_0X_HDR_INITIALIZER_LIST
-#define BOOST_NO_0X_HDR_FUTURE
-#define BOOST_NO_0X_HDR_FORWARD_LIST
-#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
-#define BOOST_NO_0X_HDR_CONDITION_VARIABLE
-#define BOOST_NO_0X_HDR_CONCEPTS
-#define BOOST_NO_0X_HDR_CODECVT
-#define BOOST_NO_0X_HDR_CHRONO
-#define BOOST_NO_0X_HDR_ARRAY
+#ifdef __GNUC__
+#include <boost/config/compiler/gcc.hpp>
+
+#elif defined(_MSC_VER)
+
+#include <boost/config/compiler/visualc.hpp>
+
+#endif
diff --git a/3rdParty/Boost/src/boost/config/compiler/pathscale.hpp b/3rdParty/Boost/src/boost/config/compiler/pathscale.hpp
new file mode 100644
index 0000000..13ede88
--- /dev/null
+++ b/3rdParty/Boost/src/boost/config/compiler/pathscale.hpp
@@ -0,0 +1,82 @@
+// (C) Copyright Bryce Lelbach 2011
+
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// PathScale EKOPath C++ Compiler
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__
+#endif
+
+#if __PATHCC__ >= 4
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# define BOOST_HAS_UNISTD_H
+# define BOOST_HAS_STDINT_H
+# define BOOST_HAS_SIGACTION
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_THREADS
+# define BOOST_HAS_PTHREADS
+# define BOOST_HAS_PTHREAD_YIELD
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+# define BOOST_HAS_NRVO
+# define BOOST_HAS_NL_TYPES_H
+# define BOOST_HAS_NANOSLEEP
+# define BOOST_HAS_LONG_LONG
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_EXPM1
+# define BOOST_HAS_DIRENT_H
+# define BOOST_HAS_CLOCK_GETTIME
+# define BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_NO_UNICODE_LITERALS
+# define BOOST_NO_TEMPLATE_ALIASES
+# define BOOST_NO_STD_UNORDERED
+# define BOOST_NO_STATIC_ASSERT
+# define BOOST_NO_SFINAE_EXPR
+# define BOOST_NO_SCOPED_ENUMS
+# define BOOST_NO_RVALUE_REFERENCES
+# define BOOST_NO_RAW_LITERALS
+# define BOOST_NO_NULLPTR
+# define BOOST_NO_NUMERIC_LIMITS_LOWEST
+# define BOOST_NO_LAMBDAS
+# define BOOST_NO_INITIALIZER_LISTS
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_DELETED_FUNCTIONS
+# define BOOST_NO_DEFAULTED_FUNCTIONS
+# define BOOST_NO_DECLTYPE
+# define BOOST_NO_CONSTEXPR
+# define BOOST_NO_CONCEPTS
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# define BOOST_NO_CHAR32_T
+# define BOOST_NO_CHAR16_T
+# define BOOST_NO_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_AUTO_DECLARATIONS
+# define BOOST_NO_0X_HDR_UNORDERED_SET
+# define BOOST_NO_0X_HDR_UNORDERED_MAP
+# define BOOST_NO_0X_HDR_TYPEINDEX
+# define BOOST_NO_0X_HDR_TUPLE
+# define BOOST_NO_0X_HDR_THREAD
+# define BOOST_NO_0X_HDR_SYSTEM_ERROR
+# define BOOST_NO_0X_HDR_REGEX
+# define BOOST_NO_0X_HDR_RATIO
+# define BOOST_NO_0X_HDR_RANDOM
+# define BOOST_NO_0X_HDR_MUTEX
+# define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
+# define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
+# define BOOST_NO_0X_HDR_INITIALIZER_LIST
+# define BOOST_NO_0X_HDR_FUTURE
+# define BOOST_NO_0X_HDR_FORWARD_LIST
+# define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
+# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
+# define BOOST_NO_0X_HDR_CONCEPTS
+# define BOOST_NO_0X_HDR_CODECVT
+# define BOOST_NO_0X_HDR_CHRONO
+#endif
+
diff --git a/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp b/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp
index 5ae9c28..7ad616e 100644
--- a/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp
+++ b/3rdParty/Boost/src/boost/config/compiler/vacpp.hpp
@@ -27,7 +27,6 @@
#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG)
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
-# define BOOST_NO_INITIALIZER_LISTS
#endif
#if (__IBMCPP__ <= 1110)
@@ -54,44 +53,66 @@
#error "Compiler not supported or configured - please reconfigure"
#endif
//
-// last known and checked version is 600:
-#if (__IBMCPP__ > 1010)
+// last known and checked version is 1110:
+#if (__IBMCPP__ > 1110)
# if defined(BOOST_ASSERT_CONFIG)
# error "Unknown compiler version - please run the configure tests and report the results"
# endif
#endif
// Some versions of the compiler have issues with default arguments on partial specializations
+#if __IBMCPP__ <= 1010
#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+#endif
//
// C++0x features
//
// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
//
-#define BOOST_NO_AUTO_DECLARATIONS
-#define BOOST_NO_AUTO_MULTIDECLARATIONS
-#define BOOST_NO_CHAR16_T
-#define BOOST_NO_CHAR32_T
+#if ! __IBMCPP_AUTO_TYPEDEDUCTION
+# define BOOST_NO_AUTO_DECLARATIONS
+# define BOOST_NO_AUTO_MULTIDECLARATIONS
+#endif
+#if ! __IBMCPP_UTF_LITERAL__
+# define BOOST_NO_CHAR16_T
+# define BOOST_NO_CHAR32_T
+#endif
#define BOOST_NO_CONCEPTS
#define BOOST_NO_CONSTEXPR
-#define BOOST_NO_DECLTYPE
+#if ! __IBMCPP_DECLTYPE
+# define BOOST_NO_DECLTYPE
+#else
+# define BOOST_HAS_DECLTYPE
+#endif
#define BOOST_NO_DEFAULTED_FUNCTIONS
#define BOOST_NO_DELETED_FUNCTIONS
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
-#define BOOST_NO_EXTERN_TEMPLATE
-#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#if ! __IBMCPP_EXTERN_TEMPLATE
+# define BOOST_NO_EXTERN_TEMPLATE
+#endif
+#if ! __IBMCPP_VARIADIC_TEMPLATES
+// not enabled separately at this time
+# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_LAMBDAS
#define BOOST_NO_NULLPTR
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_RVALUE_REFERENCES
#define BOOST_NO_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR
-#define BOOST_NO_STATIC_ASSERT
+#if ! __IBMCPP_STATIC_ASSERT
+# define BOOST_NO_STATIC_ASSERT
+#endif
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
-#define BOOST_NO_VARIADIC_TEMPLATES
-#define BOOST_NO_VARIADIC_MACROS
+#if ! __IBMCPP_VARIADIC_TEMPLATES
+# define BOOST_NO_VARIADIC_TEMPLATES
+#endif
+#if ! __C99_MACRO_WITH_VA_ARGS
+# define BOOST_NO_VARIADIC_MACROS
+#endif
diff --git a/3rdParty/Boost/src/boost/config/compiler/visualc.hpp b/3rdParty/Boost/src/boost/config/compiler/visualc.hpp
index 6755287..3878936 100644
--- a/3rdParty/Boost/src/boost/config/compiler/visualc.hpp
+++ b/3rdParty/Boost/src/boost/config/compiler/visualc.hpp
@@ -37,6 +37,9 @@
//
#endif
+/// Visual Studio has no fenv.h
+#define BOOST_NO_FENV_H
+
#if (_MSC_VER <= 1300) // 1300 == VC++ 7.0
# if !defined(_MSC_EXTENSIONS) && !defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) // VC7 bug with /Za
@@ -94,10 +97,6 @@
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
#endif
-#if _MSC_VER <= 1600 // 1600 == VC++ 10.0
-# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
-#endif
-
#if _MSC_VER == 1500 // 1500 == VC++ 9.0
// A bug in VC9:
# define BOOST_NO_ADL_BARRIER
@@ -181,6 +180,7 @@
#define BOOST_NO_STATIC_ASSERT
#define BOOST_NO_NULLPTR
#endif // _MSC_VER < 1600
+
#if _MSC_VER >= 1600
#define BOOST_HAS_STDINT_H
#endif
@@ -198,10 +198,11 @@
#define BOOST_NO_INITIALIZER_LISTS
#define BOOST_NO_RAW_LITERALS
#define BOOST_NO_SCOPED_ENUMS
-#define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TEMPLATE_ALIASES
#define BOOST_NO_UNICODE_LITERALS
#define BOOST_NO_VARIADIC_TEMPLATES
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
//
// prefix and suffix headers:
//
diff --git a/3rdParty/Boost/src/boost/config/platform/cygwin.hpp b/3rdParty/Boost/src/boost/config/platform/cygwin.hpp
index 8e1bcb0..b7ef572 100644
--- a/3rdParty/Boost/src/boost/config/platform/cygwin.hpp
+++ b/3rdParty/Boost/src/boost/config/platform/cygwin.hpp
@@ -39,6 +39,9 @@
#define BOOST_HAS_STDINT_H
#endif
+/// Cygwin has no fenv.h
+#define BOOST_NO_FENV_H
+
// boilerplate code:
#include <boost/config/posix_features.hpp>
diff --git a/3rdParty/Boost/src/boost/config/platform/win32.hpp b/3rdParty/Boost/src/boost/config/platform/win32.hpp
index f59c4ea..72c3dce 100644
--- a/3rdParty/Boost/src/boost/config/platform/win32.hpp
+++ b/3rdParty/Boost/src/boost/config/platform/win32.hpp
@@ -31,7 +31,6 @@
# define BOOST_SYMBOL_IMPORT __declspec(dllimport)
#endif
-
#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
# define BOOST_HAS_STDINT_H
# define __STDC_LIMIT_MACROS
@@ -39,6 +38,11 @@
# define BOOST_HAS_UNISTD_H
#endif
+#if defined(__MINGW32__) && (__GNUC__ >= 4)
+# define BOOST_HAS_EXPM1
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
//
// Win32 will normally be using native Win32 threads,
// but there is a pthread library avaliable as an option,
diff --git a/3rdParty/Boost/src/boost/config/select_compiler_config.hpp b/3rdParty/Boost/src/boost/config/select_compiler_config.hpp
index f9b086a..e19469a 100644
--- a/3rdParty/Boost/src/boost/config/select_compiler_config.hpp
+++ b/3rdParty/Boost/src/boost/config/select_compiler_config.hpp
@@ -14,25 +14,27 @@
// one identification macro for each of the
// compilers we support:
-# define BOOST_CXX_GCCXML 0
-# define BOOST_CXX_CLANG 0
-# define BOOST_CXX_COMO 0
-# define BOOST_CXX_DMC 0
-# define BOOST_CXX_INTEL 0
-# define BOOST_CXX_GNUC 0
-# define BOOST_CXX_KCC 0
-# define BOOST_CXX_SGI 0
-# define BOOST_CXX_TRU64 0
-# define BOOST_CXX_GHS 0
-# define BOOST_CXX_BORLAND 0
-# define BOOST_CXX_CW 0
-# define BOOST_CXX_SUNPRO 0
-# define BOOST_CXX_HPACC 0
-# define BOOST_CXX_MPW 0
-# define BOOST_CXX_IBMCPP 0
-# define BOOST_CXX_MSVC 0
-# define BOOST_CXX_PGI 0
-# define BOOST_CXX_NVCC 0
+# define BOOST_CXX_GCCXML 0
+# define BOOST_CXX_NVCC 0
+# define BOOST_CXX_COMO 0
+# define BOOST_CXX_PATHSCALE 0
+# define BOOST_CXX_CLANG 0
+# define BOOST_CXX_DMC 0
+# define BOOST_CXX_INTEL 0
+# define BOOST_CXX_GNUC 0
+# define BOOST_CXX_KCC 0
+# define BOOST_CXX_SGI 0
+# define BOOST_CXX_TRU64 0
+# define BOOST_CXX_GHS 0
+# define BOOST_CXX_BORLAND 0
+# define BOOST_CXX_CW 0
+# define BOOST_CXX_SUNPRO 0
+# define BOOST_CXX_HPACC 0
+# define BOOST_CXX_MPW 0
+# define BOOST_CXX_IBMCPP 0
+# define BOOST_CXX_MSVC 0
+# define BOOST_CXX_PGI 0
+# define BOOST_CXX_NVCC 0
// locate which compiler we are using and define
@@ -50,6 +52,10 @@
// Comeau C++
# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp"
+#elif defined(__PATHSCALE__) && (__PATHCC__ >= 4)
+// PathScale EKOPath compiler (has to come before clang and gcc)
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/pathscale.hpp"
+
#elif defined __clang__
// Clang C++ emulates GCC, so it has to appear early.
# define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp"
diff --git a/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp b/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp
index 2a1430a..f020482 100644
--- a/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp
+++ b/3rdParty/Boost/src/boost/config/select_stdlib_config.hpp
@@ -40,6 +40,10 @@
// Rogue Wave library:
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"
+#elif defined(_LIBCPP_VERSION)
+// libc++
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcpp.hpp"
+
#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
// GNU libstdc++ 3
# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
diff --git a/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp b/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp
index e33fef1..a7579da 100644
--- a/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp
+++ b/3rdParty/Boost/src/boost/config/stdlib/dinkumware.hpp
@@ -107,6 +107,7 @@
# define BOOST_NO_0X_HDR_UNORDERED_SET
# define BOOST_NO_0X_HDR_TUPLE
# define BOOST_NO_0X_HDR_TYPEINDEX
+# define BOOST_NO_NUMERIC_LIMITS_LOWEST
#endif
#if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE)
@@ -125,7 +126,6 @@
# define BOOST_NO_0X_HDR_MUTEX
# define BOOST_NO_0X_HDR_RATIO
# define BOOST_NO_0X_HDR_THREAD
-# define BOOST_NO_NUMERIC_LIMITS_LOWEST
#ifdef _CPPLIB_VER
# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
diff --git a/3rdParty/Boost/src/boost/config/stdlib/libcpp.hpp b/3rdParty/Boost/src/boost/config/stdlib/libcpp.hpp
new file mode 100644
index 0000000..db7f6f1
--- /dev/null
+++ b/3rdParty/Boost/src/boost/config/stdlib/libcpp.hpp
@@ -0,0 +1,34 @@
+// (C) Copyright Christopher Jefferson 2011.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org for most recent version.
+
+// config for libc++
+// Might need more in here later.
+
+#if !defined(_LIBCPP_VERSION)
+# include <ciso646>
+# if !defined(_LIBCPP_VERSION)
+# error "This is not libc++!"
+# endif
+#endif
+
+#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
+
+#define BOOST_HAS_THREADS
+
+#define BOOST_NO_0X_HDR_CONCEPTS
+#define BOOST_NO_0X_HDR_CONTAINER_CONCEPTS
+#define BOOST_NO_0X_HDR_ITERATOR_CONCEPTS
+#define BOOST_NO_0X_HDR_MEMORY_CONCEPTS
+
+#ifdef _LIBCPP_HAS_NO_VARIADICS
+# define BOOST_NO_0X_HDR_TUPLE
+#endif
+
+// libc++ uses a non-standard messages_base
+#define BOOST_NO_STD_MESSAGES
+
+// --- end ---
diff --git a/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp b/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp
index 01dd490..c048b89 100644
--- a/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp
+++ b/3rdParty/Boost/src/boost/config/stdlib/libstdcpp3.hpp
@@ -9,6 +9,8 @@
// config for libstdc++ v3
// not much to go in here:
+#define BOOST_GNU_STDLIB 1
+
#ifdef __GLIBCXX__
#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
#else
@@ -54,7 +56,6 @@
# define BOOST_HAS_THREADS
#endif
-
#if !defined(_GLIBCPP_USE_LONG_LONG) \
&& !defined(_GLIBCXX_USE_LONG_LONG)\
&& defined(BOOST_HAS_LONG_LONG)
@@ -63,6 +64,16 @@
# undef BOOST_HAS_LONG_LONG
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
# define BOOST_HAS_SLIST
diff --git a/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp b/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp
index dcd0af8..b43623b 100644
--- a/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp
+++ b/3rdParty/Boost/src/boost/config/stdlib/roguewave.hpp
@@ -10,6 +10,8 @@
// Rogue Wave std lib:
+#define BOOST_RW_STDLIB 1
+
#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
# include <boost/config/no_tr1/utility.hpp>
# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
@@ -154,7 +156,10 @@
// C++0x headers not yet implemented
//
+#if _RWSTD_VER < 0x05000000
# define BOOST_NO_0X_HDR_ARRAY
+# define BOOST_NO_0X_HDR_TYPE_TRAITS
+#endif
# define BOOST_NO_0X_HDR_CHRONO
# define BOOST_NO_0X_HDR_CODECVT
# define BOOST_NO_0X_HDR_CONCEPTS
@@ -172,7 +177,6 @@
# define BOOST_NO_0X_HDR_SYSTEM_ERROR
# define BOOST_NO_0X_HDR_THREAD
# define BOOST_NO_0X_HDR_TUPLE
-# define BOOST_NO_0X_HDR_TYPE_TRAITS
# define BOOST_NO_0X_HDR_TYPEINDEX
# define BOOST_NO_STD_UNORDERED // deprecated; see following
# define BOOST_NO_0X_HDR_UNORDERED_MAP
diff --git a/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp b/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp
index 4d42647..5731fe5 100644
--- a/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp
+++ b/3rdParty/Boost/src/boost/config/stdlib/sgi.hpp
@@ -40,6 +40,17 @@
# define BOOST_NO_STRINGSTREAM
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
+
//
// Assume no std::locale without own iostreams (this may be an
// incorrect assumption in some cases):
diff --git a/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp b/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp
index 0e1c9b2..85176a4 100644
--- a/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp
+++ b/3rdParty/Boost/src/boost/config/stdlib/stlport.hpp
@@ -16,6 +16,16 @@
# endif
#endif
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
//
// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
// for versions prior to 4.1(beta)
diff --git a/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp b/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp
index 0fc092f..3fcf6e0 100644
--- a/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp
+++ b/3rdParty/Boost/src/boost/config/stdlib/vacpp.hpp
@@ -12,6 +12,16 @@
#define BOOST_HAS_MACRO_USE_FACET
#define BOOST_NO_STD_MESSAGES
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
// C++0x headers not yet implemented
//
# define BOOST_NO_0X_HDR_ARRAY
diff --git a/3rdParty/Boost/src/boost/config/suffix.hpp b/3rdParty/Boost/src/boost/config/suffix.hpp
index 722758f..9cce6fd 100644
--- a/3rdParty/Boost/src/boost/config/suffix.hpp
+++ b/3rdParty/Boost/src/boost/config/suffix.hpp
@@ -349,6 +349,13 @@
#define BOOST_HAS_RVALUE_REFS
#endif
+//
+// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_VARIADIC_TEMPLATES is not defined
+//
+#if !defined(BOOST_NO_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL)
+#define BOOST_HAS_VARIADIC_TMPL
+#endif
+
// BOOST_HAS_ABI_HEADERS
// This macro gets set if we have headers that fix the ABI,
// and prevent ODR violations when linking to external libraries:
@@ -593,7 +600,7 @@ namespace boost{
// the global definition into std namespace:
#ifdef BOOST_NO_STD_TYPEINFO
#include <typeinfo>
-namespace std{ using ::typeinfo; }
+namespace std{ using ::type_info; }
#endif
// ---------------------------------------------------------------------------//
@@ -643,5 +650,19 @@ namespace std{ using ::typeinfo; }
# ifndef BOOST_GPU_ENABLED
# define BOOST_GPU_ENABLED
# endif
+
+//
+// constexpr workarounds
+//
+#if defined(BOOST_NO_CONSTEXPR)
+#define BOOST_CONSTEXPR
+#define BOOST_CONSTEXPR_OR_CONST const
+#else
+#define BOOST_CONSTEXPR constexpr
+#define BOOST_CONSTEXPR_OR_CONST constexpr
+#endif
+
+#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST
+
#endif
diff --git a/3rdParty/Boost/src/boost/detail/bitmask.hpp b/3rdParty/Boost/src/boost/detail/bitmask.hpp
new file mode 100644
index 0000000..c6714a1
--- /dev/null
+++ b/3rdParty/Boost/src/boost/detail/bitmask.hpp
@@ -0,0 +1,47 @@
+// boost/detail/bitmask.hpp ------------------------------------------------//
+
+// Copyright Beman Dawes 2006
+
+// Distributed under the Boost Software License, Version 1.0
+// http://www.boost.org/LICENSE_1_0.txt
+
+// Usage: enum foo { a=1, b=2, c=4 };
+// BOOST_BITMASK( foo );
+//
+// void f( foo arg );
+// ...
+// f( a | c );
+
+#ifndef BOOST_BITMASK_HPP
+#define BOOST_BITMASK_HPP
+
+#include <boost/cstdint.hpp>
+
+#define BOOST_BITMASK(Bitmask) \
+ \
+ inline Bitmask operator| (Bitmask x , Bitmask y ) \
+ { return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \
+ | static_cast<boost::int_least32_t>(y)); } \
+ \
+ inline Bitmask operator& (Bitmask x , Bitmask y ) \
+ { return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \
+ & static_cast<boost::int_least32_t>(y)); } \
+ \
+ inline Bitmask operator^ (Bitmask x , Bitmask y ) \
+ { return static_cast<Bitmask>( static_cast<boost::int_least32_t>(x) \
+ ^ static_cast<boost::int_least32_t>(y)); } \
+ \
+ inline Bitmask operator~ (Bitmask x ) \
+ { return static_cast<Bitmask>(~static_cast<boost::int_least32_t>(x)); } \
+ \
+ inline Bitmask & operator&=(Bitmask & x , Bitmask y) \
+ { x = x & y ; return x ; } \
+ \
+ inline Bitmask & operator|=(Bitmask & x , Bitmask y) \
+ { x = x | y ; return x ; } \
+ \
+ inline Bitmask & operator^=(Bitmask & x , Bitmask y) \
+ { x = x ^ y ; return x ; }
+
+#endif // BOOST_BITMASK_HPP
+
diff --git a/3rdParty/Boost/src/boost/detail/container_fwd.hpp b/3rdParty/Boost/src/boost/detail/container_fwd.hpp
index 67c5a21..9a21252 100644
--- a/3rdParty/Boost/src/boost/detail/container_fwd.hpp
+++ b/3rdParty/Boost/src/boost/detail/container_fwd.hpp
@@ -68,7 +68,11 @@ namespace std
template <class charT> struct char_traits;
#endif
- template <class T> class complex;
+ #if BOOST_CLANG
+ template <class T> struct complex;
+ #else
+ template <class T> class complex;
+ #endif
}
// gcc 3.4 and greater
diff --git a/3rdParty/Boost/src/boost/detail/endian.hpp b/3rdParty/Boost/src/boost/detail/endian.hpp
index 5f9b90e..98c870c 100644
--- a/3rdParty/Boost/src/boost/detail/endian.hpp
+++ b/3rdParty/Boost/src/boost/detail/endian.hpp
@@ -44,11 +44,13 @@
# endif
# define BOOST_BYTE_ORDER __BYTE_ORDER
#elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) || \
- defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)
+ defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) || \
+ defined(_STLP_BIG_ENDIAN) && !defined(_STLP_LITTLE_ENDIAN)
# define BOOST_BIG_ENDIAN
# define BOOST_BYTE_ORDER 4321
#elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) || \
- defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
+ defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__) || \
+ defined(_STLP_LITTLE_ENDIAN) && !defined(_STLP_BIG_ENDIAN)
# define BOOST_LITTLE_ENDIAN
# define BOOST_BYTE_ORDER 1234
#elif defined(__sparc) || defined(__sparc__) \
diff --git a/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp b/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp
index 1d6bc2c..2297676 100644
--- a/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp
+++ b/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp
@@ -137,7 +137,7 @@ boost
}
#ifndef BOOST_NO_RTTI
tmp << std::string("Dynamic exception type: ") <<
- units::detail::demangle((be?BOOST_EXCEPTION_DYNAMIC_TYPEID(*be):BOOST_EXCEPTION_DYNAMIC_TYPEID(*se)).type_.name()) << '\n';
+ units::detail::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_.name()) << '\n';
#endif
if( with_what && se )
tmp << "std::exception::what: " << wh << '\n';
diff --git a/3rdParty/Boost/src/boost/filesystem.hpp b/3rdParty/Boost/src/boost/filesystem.hpp
index f8b9353..d64d760 100644
--- a/3rdParty/Boost/src/boost/filesystem.hpp
+++ b/3rdParty/Boost/src/boost/filesystem.hpp
@@ -12,13 +12,16 @@
#ifndef BOOST_FILESYSTEM_FILESYSTEM_HPP
#define BOOST_FILESYSTEM_FILESYSTEM_HPP
+#include <boost/config.hpp> // for <boost/config/user.hpp>, in case
+ // BOOST_FILESYSTEM_VERSION defined there
+
# if defined(BOOST_FILESYSTEM_VERSION) \
&& BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3
# error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3
# endif
# if !defined(BOOST_FILESYSTEM_VERSION)
-# define BOOST_FILESYSTEM_VERSION 2
+# define BOOST_FILESYSTEM_VERSION 3
# endif
#if BOOST_FILESYSTEM_VERSION == 2
diff --git a/3rdParty/Boost/src/boost/filesystem/config.hpp b/3rdParty/Boost/src/boost/filesystem/config.hpp
index 9d12bce..c813bf5 100644
--- a/3rdParty/Boost/src/boost/filesystem/config.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/config.hpp
@@ -12,13 +12,16 @@
#ifndef BOOST_FILESYSTEM_CONFIGX_HPP
#define BOOST_FILESYSTEM_CONFIGX_HPP
+#include <boost/config.hpp> // for <boost/config/user.hpp>, in case
+ // BOOST_FILESYSTEM_VERSION defined there
+
# if defined(BOOST_FILESYSTEM_VERSION) \
&& BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3
# error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3
# endif
# if !defined(BOOST_FILESYSTEM_VERSION)
-# define BOOST_FILESYSTEM_VERSION 2
+# define BOOST_FILESYSTEM_VERSION 3
# endif
#if BOOST_FILESYSTEM_VERSION == 2
diff --git a/3rdParty/Boost/src/boost/filesystem/exception.hpp b/3rdParty/Boost/src/boost/filesystem/exception.hpp
index cced257..6ba8466 100644
--- a/3rdParty/Boost/src/boost/filesystem/exception.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/exception.hpp
@@ -12,13 +12,16 @@
#ifndef BOOST_FILESYSTEM_EXCEPTIONX_HPP
#define BOOST_FILESYSTEM_EXCEPTIONX_HPP
+#include <boost/config.hpp> // for <boost/config/user.hpp>, in case
+ // BOOST_FILESYSTEM_VERSION defined there
+
# if defined(BOOST_FILESYSTEM_VERSION) \
&& BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3
# error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3
# endif
# if !defined(BOOST_FILESYSTEM_VERSION)
-# define BOOST_FILESYSTEM_VERSION 2
+# define BOOST_FILESYSTEM_VERSION 3
# endif
#if BOOST_FILESYSTEM_VERSION == 2
diff --git a/3rdParty/Boost/src/boost/filesystem/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/fstream.hpp
index ae44cd9..e159e58 100644
--- a/3rdParty/Boost/src/boost/filesystem/fstream.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/fstream.hpp
@@ -12,13 +12,16 @@
#ifndef BOOST_FILESYSTEM_FSTREAMX_HPP
#define BOOST_FILESYSTEM_FSTREAMX_HPP
+#include <boost/config.hpp> // for <boost/config/user.hpp>, in case
+ // BOOST_FILESYSTEM_VERSION defined there
+
# if defined(BOOST_FILESYSTEM_VERSION) \
&& BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3
# error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3
# endif
# if !defined(BOOST_FILESYSTEM_VERSION)
-# define BOOST_FILESYSTEM_VERSION 2
+# define BOOST_FILESYSTEM_VERSION 3
# endif
#if BOOST_FILESYSTEM_VERSION == 2
diff --git a/3rdParty/Boost/src/boost/filesystem/operations.hpp b/3rdParty/Boost/src/boost/filesystem/operations.hpp
index 7dc94e9..db7b123 100644
--- a/3rdParty/Boost/src/boost/filesystem/operations.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/operations.hpp
@@ -12,13 +12,16 @@
#ifndef BOOST_FILESYSTEM_OPERATIONSX_HPP
#define BOOST_FILESYSTEM_OPERATIONSX_HPP
+#include <boost/config.hpp> // for <boost/config/user.hpp>, in case
+ // BOOST_FILESYSTEM_VERSION defined there
+
# if defined(BOOST_FILESYSTEM_VERSION) \
&& BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3
# error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3
# endif
# if !defined(BOOST_FILESYSTEM_VERSION)
-# define BOOST_FILESYSTEM_VERSION 2
+# define BOOST_FILESYSTEM_VERSION 3
# endif
#if BOOST_FILESYSTEM_VERSION == 2
diff --git a/3rdParty/Boost/src/boost/filesystem/path.hpp b/3rdParty/Boost/src/boost/filesystem/path.hpp
index bf12174..3bed7d2 100644
--- a/3rdParty/Boost/src/boost/filesystem/path.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/path.hpp
@@ -12,13 +12,16 @@
#ifndef BOOST_FILESYSTEM_PATHX_HPP
#define BOOST_FILESYSTEM_PATHX_HPP
+#include <boost/config.hpp> // for <boost/config/user.hpp>, in case
+ // BOOST_FILESYSTEM_VERSION defined there
+
# if defined(BOOST_FILESYSTEM_VERSION) \
&& BOOST_FILESYSTEM_VERSION != 2 && BOOST_FILESYSTEM_VERSION != 3
# error BOOST_FILESYSTEM_VERSION defined, but not as 2 or 3
# endif
# if !defined(BOOST_FILESYSTEM_VERSION)
-# define BOOST_FILESYSTEM_VERSION 2
+# define BOOST_FILESYSTEM_VERSION 3
# endif
#if BOOST_FILESYSTEM_VERSION == 2
diff --git a/3rdParty/Boost/src/boost/filesystem/v2/config.hpp b/3rdParty/Boost/src/boost/filesystem/v2/config.hpp
index 62656ef..7116de5 100644
--- a/3rdParty/Boost/src/boost/filesystem/v2/config.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v2/config.hpp
@@ -51,6 +51,16 @@
# endif
# endif
+// throw an exception ----------------------------------------------------------------//
+//
+// Exceptions were originally thrown via boost::throw_exception().
+// As throw_exception() became more complex, it caused user error reporting
+// to be harder to interpret, since the exception reported became much more complex.
+// The immediate fix was to throw directly, wrapped in a macro to make any later change
+// easier.
+
+#define BOOST_FILESYSTEM_THROW(EX) throw EX
+
// narrow support only for badly broken compilers or libraries -------------//
# if defined(BOOST_NO_STD_WSTRING) || defined(BOOST_NO_SFINAE) || defined(BOOST_NO_STD_LOCALE) || BOOST_WORKAROUND(__BORLANDC__, <0x610)
diff --git a/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp b/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp
index 4695a01..30b6ade 100644
--- a/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v2/convenience.hpp
@@ -13,7 +13,8 @@
#ifndef BOOST_FILESYSTEM2_CONVENIENCE_HPP
#define BOOST_FILESYSTEM2_CONVENIENCE_HPP
-#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/v2/config.hpp>
+#include <boost/filesystem/v2/operations.hpp>
#include <boost/system/error_code.hpp>
#include <vector>
#include <stack>
@@ -85,11 +86,11 @@ namespace boost
# if !defined(_STLPORT_VERSION)
return ph.parent_path() / (basename(ph) + new_extension);
# else
- typedef BOOST_FS_TYPENAME Path::string_type string_type;
- string_type filename = basename(ph) + new_extension;
- return ph.parent_path() / filename;
+ typedef BOOST_FS_TYPENAME Path::string_type string_type;
+ string_type filename = basename(ph) + new_extension;
+ return ph.parent_path() / filename;
# endif
- }
+ }
# endif
# ifndef BOOST_FILESYSTEM2_NARROW_ONLY
diff --git a/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp
index bdcd485..887d59d 100644
--- a/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v2/fstream.hpp
@@ -12,6 +12,7 @@
#ifndef BOOST_FILESYSTEM2_FSTREAM_HPP
#define BOOST_FILESYSTEM2_FSTREAM_HPP
+#include <boost/filesystem/v2/config.hpp>
#include <boost/filesystem/v2/operations.hpp> // for 8.3 hack (see below)
#include <boost/utility/enable_if.hpp>
#include <boost/detail/workaround.hpp>
diff --git a/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp b/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp
index c60046f..57c406d 100644
--- a/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v2/operations.hpp
@@ -14,6 +14,7 @@
#ifndef BOOST_FILESYSTEM2_OPERATIONS_HPP
#define BOOST_FILESYSTEM2_OPERATIONS_HPP
+#include <boost/filesystem/v2/config.hpp>
#include <boost/filesystem/v2/path.hpp>
#include <boost/detail/scoped_enum_emulation.hpp>
@@ -258,7 +259,7 @@ namespace boost
system::error_code ec;
file_status result( detail::status_api( ph.external_file_string(), ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::status", ph, ec ) );
return result;
}
@@ -277,7 +278,7 @@ namespace boost
system::error_code ec;
file_status result( symlink_status( ph, ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::symlink_status", ph, ec ) );
return result;
}
@@ -292,7 +293,7 @@ namespace boost
system::error_code ec;
file_status result( detail::status_api( ph.external_file_string(), ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::exists", ph, ec ) );
return exists( result );
}
@@ -302,7 +303,7 @@ namespace boost
system::error_code ec;
file_status result( detail::status_api( ph.external_file_string(), ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::is_directory", ph, ec ) );
return is_directory( result );
}
@@ -312,7 +313,7 @@ namespace boost
system::error_code ec;
file_status result( detail::status_api( ph.external_file_string(), ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::is_regular_file", ph, ec ) );
return is_regular_file( result );
}
@@ -323,7 +324,7 @@ namespace boost
system::error_code ec;
file_status result( detail::status_api( ph.external_file_string(), ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::is_regular", ph, ec ) );
return is_regular( result );
}
@@ -334,7 +335,7 @@ namespace boost
system::error_code ec;
file_status result( detail::status_api( ph.external_file_string(), ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::is_other", ph, ec ) );
return is_other( result );
}
@@ -350,7 +351,7 @@ namespace boost
system::error_code ec;
file_status result( detail::symlink_status_api( ph.external_file_string(), ec ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::is_symlink", ph, ec ) );
return is_symlink( result );
# endif
@@ -369,7 +370,7 @@ namespace boost
detail::query_pair result(
detail::is_empty_api( ph.external_file_string() ) );
if ( result.first )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::is_empty", ph, result.first ) );
return result.second;
}
@@ -379,7 +380,7 @@ namespace boost
detail::query_pair result( detail::equivalent_api(
ph1.external_file_string(), ph2.external_file_string() ) );
if ( result.first )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::equivalent", ph1, ph2, result.first ) );
return result.second;
}
@@ -389,7 +390,7 @@ namespace boost
detail::uintmax_pair result
( detail::file_size_api( ph.external_file_string() ) );
if ( result.first )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::file_size", ph, result.first ) );
return result.second;
}
@@ -399,7 +400,7 @@ namespace boost
detail::space_pair result
( detail::space_api( ph.external_file_string() ) );
if ( result.first )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::space", ph, result.first ) );
return result.second;
}
@@ -409,7 +410,7 @@ namespace boost
detail::time_pair result
( detail::last_write_time_api( ph.external_file_string() ) );
if ( result.first )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::last_write_time", ph, result.first ) );
return result.second;
}
@@ -422,7 +423,7 @@ namespace boost
detail::query_pair result(
detail::create_directory_api( dir_ph.external_directory_string() ) );
if ( result.first )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::create_directory",
dir_ph, result.first ) );
return result.second;
@@ -437,7 +438,7 @@ namespace boost
to_ph.external_file_string(),
from_ph.external_file_string() ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::create_hard_link",
to_ph, from_ph, ec ) );
}
@@ -461,7 +462,7 @@ namespace boost
to_ph.external_file_string(),
from_ph.external_file_string() ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::create_symlink",
to_ph, from_ph, ec ) );
}
@@ -481,7 +482,7 @@ namespace boost
system::error_code ec;
file_status f = symlink_status( ph, ec );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::remove", ph, ec ) );
return detail::remove_aux( ph, f );
}
@@ -491,7 +492,7 @@ namespace boost
system::error_code ec;
file_status f = symlink_status( ph, ec );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::remove_all", ph, ec ) );
return exists( f ) ? detail::remove_all_aux( ph, f ) : 0;
}
@@ -502,7 +503,7 @@ namespace boost
from_path.external_directory_string(),
to_path.external_directory_string() ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::rename",
from_path, to_path, ec ) );
}
@@ -518,7 +519,7 @@ namespace boost
from_path.external_directory_string(),
to_path.external_directory_string(), option == copy_option::fail_if_exists ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::copy_file",
from_path, to_path, ec ) );
}
@@ -529,7 +530,7 @@ namespace boost
typename Path::external_string_type ph;
system::error_code ec( detail::get_current_path_api( ph ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::current_path", ec ) );
return Path( Path::traits_type::to_internal( ph ) );
}
@@ -539,7 +540,7 @@ namespace boost
system::error_code ec( detail::set_current_path_api(
ph.external_directory_string() ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::current_path", ph, ec ) );
}
@@ -567,7 +568,7 @@ namespace boost
system::error_code ec( detail::get_full_path_name_api( ph.external_file_string(),
sys_ph ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::system_complete", ph, ec ) );
return Path( Path::traits_type::to_internal( sys_ph ) );
# else
@@ -606,7 +607,7 @@ namespace boost
system::error_code ec( detail::last_write_time_api( ph.external_file_string(),
new_time ) );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::last_write_time", ph, ec ) );
}
@@ -782,7 +783,7 @@ namespace boost
{
system::error_code ec = remove_api( ph.external_file_string() );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::remove", ph, ec ) );
return true;
}
@@ -803,7 +804,7 @@ namespace boost
boost::system::error_code ec;
boost::filesystem2::file_status fn = boost::filesystem2::symlink_status( itr->path(), ec );
if ( ec )
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem:remove_all", ph, ec ) );
count += remove_all_aux( itr->path(), fn );
}
@@ -980,7 +981,7 @@ namespace boost
system::error_code ec( m_init(dir_path) );
if ( ec )
{
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::basic_directory_iterator constructor",
dir_path, ec ) );
}
@@ -1013,7 +1014,7 @@ namespace boost
name, fs, symlink_fs );
if ( ec )
{
- boost::throw_exception( basic_filesystem_error<Path>(
+ BOOST_FILESYSTEM_THROW( basic_filesystem_error<Path>(
"boost::filesystem::basic_directory_iterator increment",
m_imp->m_directory_entry.path().parent_path(), ec ) );
}
diff --git a/3rdParty/Boost/src/boost/filesystem/v2/path.hpp b/3rdParty/Boost/src/boost/filesystem/v2/path.hpp
index 16d67ca..615b89c 100644
--- a/3rdParty/Boost/src/boost/filesystem/v2/path.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v2/path.hpp
@@ -20,16 +20,15 @@
#include <boost/filesystem/v2/config.hpp>
#include <boost/system/system_error.hpp>
#include <boost/iterator/iterator_facade.hpp>
-#include <boost/throw_exception.hpp>
#include <boost/shared_ptr.hpp>
#include <boost/type_traits/is_same.hpp>
#include <boost/static_assert.hpp>
+#include <boost/assert.hpp>
#include <string>
#include <algorithm> // for lexicographical_compare
#include <iosfwd> // needed by basic_path inserter and extractor
#include <stdexcept>
-#include <cassert>
# ifndef BOOST_FILESYSTEM2_NARROW_ONLY
# include <locale>
@@ -916,7 +915,7 @@ namespace boost
boost::BOOST_FILESYSTEM2_NAMESPACE::basic_path<String, Traits>
path_type;
- assert( !str.empty() && str[pos] == slash<path_type>::value
+ BOOST_ASSERT( !str.empty() && str[pos] == slash<path_type>::value
&& "precondition violation" );
// subsequent logic expects pos to be for leftmost slash of a set
@@ -1380,7 +1379,7 @@ namespace boost
typedef typename Path::string_type string_type;
typedef typename Path::traits_type traits_type;
- assert( itr.m_pos < itr.m_path_ptr->m_path.size() && "basic_path::iterator increment past end()" );
+ BOOST_ASSERT( itr.m_pos < itr.m_path_ptr->m_path.size() && "basic_path::iterator increment past end()" );
bool was_net( itr.m_name.size() > 2
&& itr.m_name[0] == slash<Path>::value
@@ -1439,7 +1438,7 @@ namespace boost
template<class Path>
void iterator_helper<Path>::do_decrement( iterator & itr )
{
- assert( itr.m_pos && "basic_path::iterator decrement past begin()" );
+ BOOST_ASSERT( itr.m_pos && "basic_path::iterator decrement past begin()" );
typedef typename Path::string_type string_type;
typedef typename Path::traits_type traits_type;
diff --git a/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp b/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp
index 235aa79..60a2a3b 100644
--- a/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v3/fstream.hpp
@@ -27,7 +27,8 @@
// on Windows, except for standard libaries known to have wchar_t overloads for
// file stream I/O, use path::string() to get a narrow character c_str()
#if defined(BOOST_WINDOWS_API) \
- && !(defined(_CPPLIB_VER) && _CPPLIB_VER >= 405) // not (Dinkumware with overloads)
+ && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 405 || defined(_STLPORT_VERSION))
+ // !Dinkumware || early Dinkumware || STLPort masquerading as Dinkumware
# define BOOST_FILESYSTEM_C_STR string().c_str() // use narrow, since wide not available
#else // use the native c_str, which will be narrow on POSIX, wide on Windows
# define BOOST_FILESYSTEM_C_STR c_str()
diff --git a/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp b/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp
index cf47c56..7d1608d 100644
--- a/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v3/operations.hpp
@@ -25,6 +25,7 @@
#include <boost/filesystem/v3/path.hpp>
#include <boost/detail/scoped_enum_emulation.hpp>
+#include <boost/detail/bitmask.hpp>
#include <boost/system/error_code.hpp>
#include <boost/system/system_error.hpp>
#include <boost/shared_ptr.hpp>
@@ -75,8 +76,8 @@ namespace boost
fifo_file,
socket_file,
reparse_file, // Windows: FILE_ATTRIBUTE_REPARSE_POINT that is not a symlink
- type_unknown, // file does exist, but isn't one of the above types or
- // we don't have strong enough permission to find its type
+ type_unknown, // file does exist, but isn't one of the above types or
+ // we don't have strong enough permission to find its type
_detail_directory_symlink // internal use only; never exposed to users
};
@@ -84,7 +85,8 @@ namespace boost
class BOOST_FILESYSTEM_DECL file_status
{
public:
- explicit file_status(file_type v = status_error) : m_value(v) {}
+ file_status() : m_value(status_error) {}
+ explicit file_status(file_type v) : m_value(v) {}
void type(file_type v) { m_value = v; }
file_type type() const { return m_value; }
@@ -122,7 +124,7 @@ namespace boost
};
BOOST_SCOPED_ENUM_START(copy_option)
- {fail_if_exists, overwrite_if_exists};
+ {none, fail_if_exists = none, overwrite_if_exists};
BOOST_SCOPED_ENUM_END
//--------------------------------------------------------------------------------------//
@@ -191,6 +193,8 @@ namespace boost
BOOST_FILESYSTEM_DECL
path system_complete(const path& p, system::error_code* ec=0);
BOOST_FILESYSTEM_DECL
+ path temp_directory_path(system::error_code* ec=0);
+ BOOST_FILESYSTEM_DECL
path unique_path(const path& p, system::error_code* ec=0);
} // namespace detail
@@ -258,9 +262,7 @@ namespace boost
// forward declarations
path current_path(); // fwd declaration
-# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
path initial_path();
-# endif
BOOST_FILESYSTEM_DECL
path absolute(const path& p, const path& base=current_path());
@@ -331,17 +333,17 @@ namespace boost
void create_directory_symlink(const path& to, const path& from, system::error_code& ec)
{detail::create_directory_symlink(to, from, &ec);}
inline
- void create_hard_link(const path& to, const path& from) {detail::create_hard_link(to, from);}
+ void create_hard_link(const path& to, const path& new_hard_link) {detail::create_hard_link(to, new_hard_link);}
inline
- void create_hard_link(const path& to, const path& from, system::error_code& ec)
- {detail::create_hard_link(to, from, &ec);}
+ void create_hard_link(const path& to, const path& new_hard_link, system::error_code& ec)
+ {detail::create_hard_link(to, new_hard_link, &ec);}
inline
- void create_symlink(const path& to, const path& from) {detail::create_symlink(to, from);}
+ void create_symlink(const path& to, const path& new_symlink) {detail::create_symlink(to, new_symlink);}
inline
- void create_symlink(const path& to, const path& from, system::error_code& ec)
- {detail::create_symlink(to, from, &ec);}
+ void create_symlink(const path& to, const path& new_symlink, system::error_code& ec)
+ {detail::create_symlink(to, new_symlink, &ec);}
inline
path current_path() {return detail::current_path();}
@@ -372,7 +374,6 @@ namespace boost
inline
boost::uintmax_t hard_link_count(const path& p, system::error_code& ec)
{return detail::hard_link_count(p, &ec);}
-# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
inline
path initial_path() {return detail::initial_path();}
@@ -383,7 +384,6 @@ namespace boost
path initial_path() {return initial_path();}
template <class Path>
path initial_path(system::error_code& ec) {return detail::initial_path(&ec);}
-# endif
inline
std::time_t last_write_time(const path& p) {return detail::last_write_time(p);}
@@ -446,6 +446,12 @@ namespace boost
path system_complete(const path& p, system::error_code& ec)
{return detail::system_complete(p, &ec);}
inline
+ path temp_directory_path() {return detail::temp_directory_path();}
+
+ inline
+ path temp_directory_path(system::error_code& ec)
+ {return detail::temp_directory_path(&ec);}
+ inline
path unique_path(const path& p="%%%%-%%%%-%%%%-%%%%")
{ return detail::unique_path(p); }
inline
@@ -633,6 +639,17 @@ namespace detail
// //
//--------------------------------------------------------------------------------------//
+ BOOST_SCOPED_ENUM_START(symlink_option)
+ {
+ none,
+ no_recurse = none, // don't follow directory symlinks (default behavior)
+ recurse, // follow directory symlinks
+ _detail_no_push = recurse << 1 // internal use only
+ };
+ BOOST_SCOPED_ENUM_END
+
+ BOOST_BITMASK(BOOST_SCOPED_ENUM(symlink_option))
+
namespace detail
{
struct recur_dir_itr_imp
@@ -640,9 +657,9 @@ namespace detail
typedef directory_iterator element_type;
std::stack< element_type, std::vector< element_type > > m_stack;
int m_level;
- bool m_no_push_request;
+ BOOST_SCOPED_ENUM(symlink_option) m_options;
- recur_dir_itr_imp() : m_level(0), m_no_push_request(false) {}
+ recur_dir_itr_imp() : m_level(0), m_options(symlink_option::none) {}
void increment(system::error_code* ec); // ec == 0 means throw on error
@@ -658,9 +675,11 @@ namespace detail
void recur_dir_itr_imp::increment(system::error_code* ec)
// ec == 0 means throw on error
{
- if (m_no_push_request)
- { m_no_push_request = false; }
- else if (is_directory(m_stack.top()->status()))
+ if ((m_options & symlink_option::_detail_no_push) == symlink_option::_detail_no_push)
+ m_options &= ~symlink_option::_detail_no_push;
+ else if (is_directory(m_stack.top()->status())
+ && (!is_symlink(m_stack.top()->symlink_status())
+ || (m_options & symlink_option::recurse) == symlink_option::recurse))
{
if (ec == 0)
m_stack.push(directory_iterator(m_stack.top()->path()));
@@ -714,27 +733,41 @@ namespace detail
recursive_directory_iterator(){} // creates the "end" iterator
- explicit recursive_directory_iterator(const path& dir_path)
+ explicit recursive_directory_iterator(const path& dir_path,
+ BOOST_SCOPED_ENUM(symlink_option) opt = symlink_option::none)
: m_imp(new detail::recur_dir_itr_imp)
{
+ m_imp->m_options = opt;
m_imp->m_stack.push(directory_iterator(dir_path));
if (m_imp->m_stack.top() == directory_iterator())
{ m_imp.reset (); }
}
recursive_directory_iterator(const path& dir_path,
+ BOOST_SCOPED_ENUM(symlink_option) opt,
+ system::error_code & ec)
+ : m_imp(new detail::recur_dir_itr_imp)
+ {
+ m_imp->m_options = opt;
+ m_imp->m_stack.push(directory_iterator(dir_path, ec));
+ if (m_imp->m_stack.top() == directory_iterator())
+ { m_imp.reset (); }
+ }
+
+ recursive_directory_iterator(const path& dir_path,
system::error_code & ec)
: m_imp(new detail::recur_dir_itr_imp)
{
+ m_imp->m_options = symlink_option::none;
m_imp->m_stack.push(directory_iterator(dir_path, ec));
if (m_imp->m_stack.top() == directory_iterator())
{ m_imp.reset (); }
}
- recursive_directory_iterator& increment(system::error_code* ec)
+ recursive_directory_iterator& increment(system::error_code& ec)
{
BOOST_ASSERT(m_imp.get() && "increment() on end recursive_directory_iterator");
- m_imp->increment(ec);
+ m_imp->increment(&ec);
return *this;
}
@@ -744,12 +777,17 @@ namespace detail
return m_imp->m_level;
}
- bool no_push_request() const
+ bool no_push_pending() const
{
- BOOST_ASSERT(m_imp.get() && "no_push_request() on end recursive_directory_iterator");
- return m_imp->m_no_push_request;
+ BOOST_ASSERT(m_imp.get() && "is_no_push_requested() on end recursive_directory_iterator");
+ return (m_imp->m_options & symlink_option::_detail_no_push)
+ == symlink_option::_detail_no_push;
}
+# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
+ bool no_push_request() const { return no_push_pending(); }
+# endif
+
void pop()
{
BOOST_ASSERT(m_imp.get() && "pop() on end recursive_directory_iterator");
@@ -757,10 +795,13 @@ namespace detail
if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator
}
- void no_push()
+ void no_push(bool value=true)
{
BOOST_ASSERT(m_imp.get() && "no_push() on end recursive_directory_iterator");
- m_imp->m_no_push_request = true;
+ if (value)
+ m_imp->m_options |= symlink_option::_detail_no_push;
+ else
+ m_imp->m_options &= ~symlink_option::_detail_no_push;
}
file_status status() const
@@ -799,7 +840,8 @@ namespace detail
{
BOOST_ASSERT(m_imp.get() && "increment of end recursive_directory_iterator");
m_imp->increment(0);
- if (m_imp->m_stack.empty()) m_imp.reset(); // done, so make end iterator
+ if (m_imp->m_stack.empty())
+ m_imp.reset(); // done, so make end iterator
}
bool equal(const recursive_directory_iterator& rhs) const
@@ -963,6 +1005,7 @@ namespace boost
using filesystem3::file_type;
using filesystem3::filesystem_error;
using filesystem3::hard_link_count;
+ using filesystem3::initial_path;
using filesystem3::is_directory;
using filesystem3::is_directory;
using filesystem3::is_empty;
@@ -973,6 +1016,7 @@ namespace boost
using filesystem3::read_symlink;
using filesystem3::recursive_directory_iterator;
using filesystem3::regular_file;
+ using filesystem3::reparse_file;
using filesystem3::remove;
using filesystem3::remove_all;
using filesystem3::rename;
@@ -984,12 +1028,13 @@ namespace boost
using filesystem3::status_error;
using filesystem3::status_known;
using filesystem3::symlink_file;
+ using filesystem3::symlink_option;
using filesystem3::symlink_status;
using filesystem3::system_complete;
+ using filesystem3::temp_directory_path;
using filesystem3::type_unknown;
using filesystem3::unique_path;
# ifndef BOOST_FILESYSTEM_NO_DEPRECATED
- using filesystem3::initial_path;
using filesystem3::is_regular;
using filesystem3::status_unknown;
using filesystem3::symbolic_link_exists;
diff --git a/3rdParty/Boost/src/boost/filesystem/v3/path.hpp b/3rdParty/Boost/src/boost/filesystem/v3/path.hpp
index 1cd1522..f81b631 100644
--- a/3rdParty/Boost/src/boost/filesystem/v3/path.hpp
+++ b/3rdParty/Boost/src/boost/filesystem/v3/path.hpp
@@ -452,7 +452,6 @@ namespace filesystem3
void m_erase_redundant_separator(string_type::size_type sep_pos);
string_type::size_type m_parent_path_end() const;
- void m_portable();
path& m_normalize();
@@ -479,7 +478,7 @@ namespace filesystem3
class path::iterator
: public boost::iterator_facade<
- iterator,
+ path::iterator,
path const,
boost::bidirectional_traversal_tag >
{
diff --git a/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp b/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp
index fdbf53f..1278c2f 100644
--- a/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp
+++ b/3rdParty/Boost/src/boost/functional/hash/detail/hash_float_generic.hpp
@@ -53,7 +53,7 @@ namespace boost
v = ldexp(v, limits<std::size_t>::digits);
std::size_t seed = static_cast<std::size_t>(v);
- v -= seed;
+ v -= static_cast<T>(seed);
// ceiling(digits(T) * log2(radix(T))/ digits(size_t)) - 1;
std::size_t const length
@@ -66,7 +66,7 @@ namespace boost
{
v = ldexp(v, limits<std::size_t>::digits);
std::size_t part = static_cast<std::size_t>(v);
- v -= part;
+ v -= static_cast<T>(part);
hash_float_combine(seed, part);
}
diff --git a/3rdParty/Boost/src/boost/functional/hash/hash.hpp b/3rdParty/Boost/src/boost/functional/hash/hash.hpp
index 0eedf7f..51ec860 100644
--- a/3rdParty/Boost/src/boost/functional/hash/hash.hpp
+++ b/3rdParty/Boost/src/boost/functional/hash/hash.hpp
@@ -24,6 +24,10 @@
#include <boost/type_traits/is_pointer.hpp>
#endif
+#if !defined(BOOST_NO_0X_HDR_TYPEINDEX)
+#include <typeindex>
+#endif
+
#if BOOST_WORKAROUND(__GNUC__, < 3) \
&& !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
#define BOOST_HASH_CHAR_TRAITS string_char_traits
@@ -87,6 +91,10 @@ namespace boost
std::size_t hash_value(
std::basic_string<Ch, std::BOOST_HASH_CHAR_TRAITS<Ch>, A> const&);
+#if !defined(BOOST_NO_0X_HDR_TYPEINDEX)
+ std::size_t hash_value(std::type_index);
+#endif
+
// Implementation
namespace hash_detail
@@ -210,8 +218,8 @@ namespace boost
#endif
{
#if defined(__VMS) && __INITIAL_POINTER_SIZE == 64
- // for some reason ptrdiff_t on OpenVMS compiler with
- // 64 bit is not 64 bit !!!
+ // for some reason ptrdiff_t on OpenVMS compiler with
+ // 64 bit is not 64 bit !!!
std::size_t x = static_cast<std::size_t>(
reinterpret_cast<long long int>(v));
#else
@@ -331,6 +339,13 @@ namespace boost
return boost::hash_detail::float_hash_value(v);
}
+#if !defined(BOOST_NO_0X_HDR_TYPEINDEX)
+ inline std::size_t hash_value(std::type_index v)
+ {
+ return v.hash_code();
+ }
+#endif
+
//
// boost::hash
//
@@ -435,6 +450,10 @@ namespace boost
BOOST_HASH_SPECIALIZE(boost::ulong_long_type)
#endif
+#if !defined(BOOST_NO_0X_HDR_TYPEINDEX)
+ BOOST_HASH_SPECIALIZE(std::type_index)
+#endif
+
#undef BOOST_HASH_SPECIALIZE
#undef BOOST_HASH_SPECIALIZE_REF
diff --git a/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp b/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp
index 13cfc35..502f422 100644
--- a/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp
+++ b/3rdParty/Boost/src/boost/io/detail/quoted_manip.hpp
@@ -125,15 +125,15 @@ namespace boost
std::basic_istream<Char, Traits>& operator>>(std::basic_istream<Char, Traits>& is,
const quoted_proxy<std::basic_string<Char, Traits, Alloc>&, Char>& proxy)
{
+ proxy.string.clear();
Char c;
is >> c;
if (c != proxy.delim)
{
- proxy.string = c;
+ is.unget();
is >> proxy.string;
return is;
}
- proxy.string.clear();
{
boost::io::ios_flags_saver ifs(is);
is >> std::noskipws;
diff --git a/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp b/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp
index 967d60f..5ee73b5 100644
--- a/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp
+++ b/3rdParty/Boost/src/boost/iterator/iterator_facade.hpp
@@ -105,6 +105,7 @@ namespace boost
typedef typename remove_const<ValueParam>::type value_type;
+ // Not the real associated pointer type
typedef typename mpl::eval_if<
boost::detail::iterator_writability_disabled<ValueParam,Reference>
, add_pointer<const value_type>
@@ -323,7 +324,7 @@ namespace boost
static type make(Reference x)
{
- return implicit_cast<type>(&x);
+ return boost::implicit_cast<type>(&x);
}
};
@@ -617,6 +618,12 @@ namespace boost
Value, CategoryOrTraversal, Reference, Difference
> associated_types;
+ typedef boost::detail::operator_arrow_result<
+ typename associated_types::value_type
+ , Reference
+ , typename associated_types::pointer
+ > pointer_;
+
protected:
// For use by derived classes
typedef iterator_facade<Derived,Value,CategoryOrTraversal,Reference,Difference> iterator_facade_;
@@ -626,7 +633,9 @@ namespace boost
typedef typename associated_types::value_type value_type;
typedef Reference reference;
typedef Difference difference_type;
- typedef typename associated_types::pointer pointer;
+
+ typedef typename pointer_::type pointer;
+
typedef typename associated_types::iterator_category iterator_category;
reference operator*() const
@@ -634,18 +643,9 @@ namespace boost
return iterator_core_access::dereference(this->derived());
}
- typename boost::detail::operator_arrow_result<
- value_type
- , reference
- , pointer
- >::type
- operator->() const
+ pointer operator->() const
{
- return boost::detail::operator_arrow_result<
- value_type
- , reference
- , pointer
- >::make(*this->derived());
+ return pointer_::make(*this->derived());
}
typename boost::detail::operator_brackets_result<Derived,Value,reference>::type
diff --git a/3rdParty/Boost/src/boost/mpl/aux_/config/operators.hpp b/3rdParty/Boost/src/boost/mpl/aux_/config/operators.hpp
deleted file mode 100644
index 2a38a3d..0000000
--- a/3rdParty/Boost/src/boost/mpl/aux_/config/operators.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_CONFIG_OPERATORS_HPP_INCLUDED
-#define BOOST_MPL_AUX_CONFIG_OPERATORS_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: operators.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/aux_/config/gcc.hpp>
-#include <boost/mpl/aux_/config/msvc.hpp>
-#include <boost/mpl/aux_/config/workaround.hpp>
-
-#if !defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING) \
- && ( BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
- || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
- || BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \
- || BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, <= 0x0295) \
- || BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(600)) \
- )
-
-# define BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING
-
-#endif
-
-#endif // BOOST_MPL_AUX_CONFIG_OPERATORS_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/aux_/has_key_impl.hpp b/3rdParty/Boost/src/boost/mpl/aux_/has_key_impl.hpp
deleted file mode 100644
index 3a12a22..0000000
--- a/3rdParty/Boost/src/boost/mpl/aux_/has_key_impl.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_HAS_KEY_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_HAS_KEY_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2002-2004
-// Copyright David Abrahams 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/libs/mpl for documentation.
-
-// $Id: has_key_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/has_key_fwd.hpp>
-#include <boost/mpl/aux_/traits_lambda_spec.hpp>
-
-namespace boost { namespace mpl {
-
-// no default implementation; the definition is needed to make MSVC happy
-
-template< typename Tag > struct has_key_impl
-{
- template< typename AssociativeSequence, typename Key > struct apply;
-};
-
-BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2,has_key_impl)
-
-}}
-
-#endif // BOOST_MPL_AUX_HAS_KEY_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/aux_/overload_names.hpp b/3rdParty/Boost/src/boost/mpl/aux_/overload_names.hpp
deleted file mode 100644
index 0fa4a98..0000000
--- a/3rdParty/Boost/src/boost/mpl/aux_/overload_names.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_OVERLOAD_NAMES_HPP_INCLUDED
-#define BOOST_MPL_AUX_OVERLOAD_NAMES_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: overload_names.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/aux_/ptr_to_ref.hpp>
-#include <boost/mpl/aux_/config/operators.hpp>
-
-#if defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING)
-
-# include <boost/mpl/aux_/static_cast.hpp>
-
-# define BOOST_MPL_AUX_OVERLOAD_VALUE_BY_KEY operator/
-# define BOOST_MPL_AUX_OVERLOAD_ITEM_BY_ORDER operator|
-# define BOOST_MPL_AUX_OVERLOAD_ORDER_BY_KEY operator||
-# define BOOST_MPL_AUX_OVERLOAD_IS_MASKED operator%
-
-# define BOOST_MPL_AUX_OVERLOAD_CALL_VALUE_BY_KEY(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) / x
-# define BOOST_MPL_AUX_OVERLOAD_CALL_ITEM_BY_ORDER(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) | x
-# define BOOST_MPL_AUX_OVERLOAD_CALL_ORDER_BY_KEY(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) || x
-# define BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(T, x) BOOST_MPL_AUX_PTR_TO_REF(T) % x
-
-#else
-
-# define BOOST_MPL_AUX_OVERLOAD_VALUE_BY_KEY value_by_key_
-# define BOOST_MPL_AUX_OVERLOAD_ITEM_BY_ORDER item_by_order_
-# define BOOST_MPL_AUX_OVERLOAD_ORDER_BY_KEY order_by_key_
-# define BOOST_MPL_AUX_OVERLOAD_IS_MASKED is_masked_
-
-# define BOOST_MPL_AUX_OVERLOAD_CALL_VALUE_BY_KEY(T, x) T::BOOST_MPL_AUX_OVERLOAD_VALUE_BY_KEY( BOOST_MPL_AUX_PTR_TO_REF(T), x )
-# define BOOST_MPL_AUX_OVERLOAD_CALL_ITEM_BY_ORDER(T, x) T::BOOST_MPL_AUX_OVERLOAD_ITEM_BY_ORDER( BOOST_MPL_AUX_PTR_TO_REF(T), x )
-# define BOOST_MPL_AUX_OVERLOAD_CALL_ORDER_BY_KEY(T, x) T::BOOST_MPL_AUX_OVERLOAD_ORDER_BY_KEY( BOOST_MPL_AUX_PTR_TO_REF(T), x )
-# define BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(T, x) T::BOOST_MPL_AUX_OVERLOAD_IS_MASKED( BOOST_MPL_AUX_PTR_TO_REF(T), x )
-
-#endif
-
-#endif // BOOST_MPL_AUX_OVERLOAD_NAMES_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/aux_/ptr_to_ref.hpp b/3rdParty/Boost/src/boost/mpl/aux_/ptr_to_ref.hpp
deleted file mode 100644
index 3b5415c..0000000
--- a/3rdParty/Boost/src/boost/mpl/aux_/ptr_to_ref.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_PTR_TO_REF_HPP_INCLUDED
-#define BOOST_MPL_AUX_PTR_TO_REF_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: ptr_to_ref.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/aux_/static_cast.hpp>
-#include <boost/mpl/aux_/config/msvc.hpp>
-#include <boost/mpl/aux_/config/workaround.hpp>
-
-
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
- || ( BOOST_WORKAROUND(__EDG_VERSION__, <= 245) \
- && !(defined(__STD_STRICT_ANSI) \
- || defined(__STD_STRICT_ANSI_ERRORS)) )
-
-# define BOOST_MPL_AUX_PTR_TO_REF(X) \
- *BOOST_MPL_AUX_STATIC_CAST(X*, 0) \
-/**/
-
-#else
-
-# define BOOST_MPL_AUX_PTR_TO_REF(X) \
- aux::ptr_to_ref(BOOST_MPL_AUX_STATIC_CAST(X*, 0)) \
-/**/
-
-#endif
-
-
-namespace boost { namespace mpl { namespace aux {
-
-template< typename T > static T const& ptr_to_ref(T*);
-
-}}}
-
-#endif // BOOST_MPL_AUX_PTR_TO_REF_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/aux_/reverse_iter_fold_impl.hpp b/3rdParty/Boost/src/boost/mpl/aux_/reverse_iter_fold_impl.hpp
deleted file mode 100644
index ce9257f..0000000
--- a/3rdParty/Boost/src/boost/mpl/aux_/reverse_iter_fold_impl.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-#ifndef BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
-#define BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: reverse_iter_fold_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#if !defined(BOOST_MPL_PREPROCESSING_MODE)
-# include <boost/mpl/next_prior.hpp>
-# include <boost/mpl/apply.hpp>
-# include <boost/mpl/aux_/config/ctps.hpp>
-# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
- || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
-# include <boost/mpl/if.hpp>
-# include <boost/type_traits/is_same.hpp>
-# endif
-#endif
-
-#include <boost/mpl/aux_/config/use_preprocessed.hpp>
-
-#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
- && !defined(BOOST_MPL_PREPROCESSING_MODE)
-
-# define BOOST_MPL_PREPROCESSED_HEADER reverse_iter_fold_impl.hpp
-# include <boost/mpl/aux_/include_preprocessed.hpp>
-
-#else
-
-# define AUX778076_FOLD_IMPL_OP(iter) iter
-# define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_iter_fold
-# include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
-
-#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
-#endif // BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/base.hpp b/3rdParty/Boost/src/boost/mpl/base.hpp
deleted file mode 100644
index 3f7e8a4..0000000
--- a/3rdParty/Boost/src/boost/mpl/base.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#ifndef BOOST_MPL_BASE_HPP_INCLUDED
-#define BOOST_MPL_BASE_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: base.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/aux_/na_spec.hpp>
-#include <boost/mpl/aux_/lambda_support.hpp>
-
-namespace boost { namespace mpl {
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(T)
- >
-struct base
-{
- typedef typename T::base type;
- BOOST_MPL_AUX_LAMBDA_SUPPORT(1,base,(T))
-};
-
-BOOST_MPL_AUX_NA_SPEC(1, base)
-
-}}
-
-#endif // BOOST_MPL_BASE_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/comparison.hpp b/3rdParty/Boost/src/boost/mpl/comparison.hpp
deleted file mode 100644
index 005d280..0000000
--- a/3rdParty/Boost/src/boost/mpl/comparison.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#ifndef BOOST_MPL_COMPARISON_HPP_INCLUDED
-#define BOOST_MPL_COMPARISON_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: comparison.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/equal_to.hpp>
-#include <boost/mpl/not_equal_to.hpp>
-#include <boost/mpl/less.hpp>
-#include <boost/mpl/greater.hpp>
-#include <boost/mpl/less_equal.hpp>
-#include <boost/mpl/greater_equal.hpp>
-
-#endif // BOOST_MPL_COMPARISON_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/erase_fwd.hpp b/3rdParty/Boost/src/boost/mpl/erase_fwd.hpp
deleted file mode 100644
index 0626ecb..0000000
--- a/3rdParty/Boost/src/boost/mpl/erase_fwd.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#ifndef BOOST_MPL_ERASE_FWD_HPP_INCLUDED
-#define BOOST_MPL_ERASE_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: erase_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-namespace boost { namespace mpl {
-
-template< typename Tag > struct erase_impl;
-template< typename Sequence, typename First, typename Last > struct erase;
-
-}}
-
-#endif // BOOST_MPL_ERASE_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/erase_key_fwd.hpp b/3rdParty/Boost/src/boost/mpl/erase_key_fwd.hpp
deleted file mode 100644
index 4844893..0000000
--- a/3rdParty/Boost/src/boost/mpl/erase_key_fwd.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#ifndef BOOST_MPL_ERASE_KEY_FWD_HPP_INCLUDED
-#define BOOST_MPL_ERASE_KEY_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: erase_key_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-namespace boost { namespace mpl {
-
-template< typename Tag > struct erase_key_impl;
-template< typename Sequence, typename Key > struct erase_key;
-
-}}
-
-#endif // BOOST_MPL_ERASE_KEY_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/greater.hpp b/3rdParty/Boost/src/boost/mpl/greater.hpp
deleted file mode 100644
index e33ae48..0000000
--- a/3rdParty/Boost/src/boost/mpl/greater.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_MPL_GREATER_HPP_INCLUDED
-#define BOOST_MPL_GREATER_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: greater.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#define AUX778076_OP_NAME greater
-#define AUX778076_OP_TOKEN >
-#include <boost/mpl/aux_/comparison_op.hpp>
-
-#endif // BOOST_MPL_GREATER_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/greater_equal.hpp b/3rdParty/Boost/src/boost/mpl/greater_equal.hpp
deleted file mode 100644
index 91ccf83..0000000
--- a/3rdParty/Boost/src/boost/mpl/greater_equal.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
-#define BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: greater_equal.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#define AUX778076_OP_NAME greater_equal
-#define AUX778076_OP_TOKEN >=
-#include <boost/mpl/aux_/comparison_op.hpp>
-
-#endif // BOOST_MPL_GREATER_EQUAL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/has_key.hpp b/3rdParty/Boost/src/boost/mpl/has_key.hpp
deleted file mode 100644
index 85102ed..0000000
--- a/3rdParty/Boost/src/boost/mpl/has_key.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef BOOST_MPL_HAS_KEY_HPP_INCLUDED
-#define BOOST_MPL_HAS_KEY_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_key.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/has_key_fwd.hpp>
-#include <boost/mpl/sequence_tag.hpp>
-#include <boost/mpl/aux_/has_key_impl.hpp>
-#include <boost/mpl/aux_/na_spec.hpp>
-#include <boost/mpl/aux_/lambda_support.hpp>
-
-namespace boost { namespace mpl {
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(AssociativeSequence)
- , typename BOOST_MPL_AUX_NA_PARAM(Key)
- >
-struct has_key
- : has_key_impl< typename sequence_tag<AssociativeSequence>::type >
- ::template apply<AssociativeSequence,Key>
-{
- BOOST_MPL_AUX_LAMBDA_SUPPORT(2,has_key,(AssociativeSequence,Key))
-};
-
-BOOST_MPL_AUX_NA_SPEC(2, has_key)
-
-}}
-
-#endif // BOOST_MPL_HAS_KEY_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/has_key_fwd.hpp b/3rdParty/Boost/src/boost/mpl/has_key_fwd.hpp
deleted file mode 100644
index 49b0fb5..0000000
--- a/3rdParty/Boost/src/boost/mpl/has_key_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_MPL_HAS_KEY_FWD_HPP_INCLUDED
-#define BOOST_MPL_HAS_KEY_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_key_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-namespace boost { namespace mpl {
-
-template< typename Tag > struct has_key_impl;
-template< typename AssociativeSequence, typename Key > struct has_key;
-
-}}
-
-#endif // BOOST_MPL_HAS_KEY_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/insert_fwd.hpp b/3rdParty/Boost/src/boost/mpl/insert_fwd.hpp
deleted file mode 100644
index 9c6ff64..0000000
--- a/3rdParty/Boost/src/boost/mpl/insert_fwd.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#ifndef BOOST_MPL_INSERT_FWD_HPP_INCLUDED
-#define BOOST_MPL_INSERT_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: insert_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-namespace boost { namespace mpl {
-
-template< typename Tag > struct insert_impl;
-template< typename Sequence, typename Pos_or_T, typename T > struct insert;
-
-}}
-
-#endif // BOOST_MPL_INSERT_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/key_type_fwd.hpp b/3rdParty/Boost/src/boost/mpl/key_type_fwd.hpp
deleted file mode 100644
index 95f8445..0000000
--- a/3rdParty/Boost/src/boost/mpl/key_type_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_MPL_KEY_TYPE_FWD_HPP_INCLUDED
-#define BOOST_MPL_KEY_TYPE_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: key_type_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-namespace boost { namespace mpl {
-
-template< typename Tag > struct key_type_impl;
-template< typename AssociativeSequence, typename T > struct key_type;
-
-}}
-
-#endif // BOOST_MPL_KEY_TYPE_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/less_equal.hpp b/3rdParty/Boost/src/boost/mpl/less_equal.hpp
deleted file mode 100644
index 2284d1d..0000000
--- a/3rdParty/Boost/src/boost/mpl/less_equal.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_MPL_LESS_EQUAL_HPP_INCLUDED
-#define BOOST_MPL_LESS_EQUAL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: less_equal.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#define AUX778076_OP_NAME less_equal
-#define AUX778076_OP_TOKEN <=
-#include <boost/mpl/aux_/comparison_op.hpp>
-
-#endif // BOOST_MPL_LESS_EQUAL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/not_equal_to.hpp b/3rdParty/Boost/src/boost/mpl/not_equal_to.hpp
deleted file mode 100644
index 00132b1..0000000
--- a/3rdParty/Boost/src/boost/mpl/not_equal_to.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-
-#ifndef BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
-#define BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2000-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: not_equal_to.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#define AUX778076_OP_NAME not_equal_to
-#define AUX778076_OP_TOKEN !=
-#include <boost/mpl/aux_/comparison_op.hpp>
-
-#endif // BOOST_MPL_NOT_EQUAL_TO_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/reverse_iter_fold.hpp b/3rdParty/Boost/src/boost/mpl/reverse_iter_fold.hpp
deleted file mode 100644
index e6b3ed3..0000000
--- a/3rdParty/Boost/src/boost/mpl/reverse_iter_fold.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-
-#ifndef BOOST_MPL_ITER_FOLD_BACKWARD_HPP_INCLUDED
-#define BOOST_MPL_ITER_FOLD_BACKWARD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2001-2004
-// Copyright Dave Abrahams 2001-2002
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: reverse_iter_fold.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/begin_end.hpp>
-#include <boost/mpl/O1_size.hpp>
-#include <boost/mpl/arg.hpp>
-#include <boost/mpl/lambda.hpp>
-#include <boost/mpl/aux_/reverse_iter_fold_impl.hpp>
-#include <boost/mpl/aux_/na_spec.hpp>
-#include <boost/mpl/aux_/lambda_support.hpp>
-
-namespace boost { namespace mpl {
-
-template<
- typename BOOST_MPL_AUX_NA_PARAM(Sequence)
- , typename BOOST_MPL_AUX_NA_PARAM(State)
- , typename BOOST_MPL_AUX_NA_PARAM(BackwardOp)
- , typename ForwardOp = arg<1>
- >
-struct reverse_iter_fold
-{
- typedef typename aux::reverse_iter_fold_impl<
- ::boost::mpl::O1_size<Sequence>::value
- , typename begin<Sequence>::type
- , typename end<Sequence>::type
- , State
- , typename lambda<BackwardOp>::type
- , typename lambda<ForwardOp>::type
- >::state type;
-
- BOOST_MPL_AUX_LAMBDA_SUPPORT(
- 4
- , reverse_iter_fold
- , (Sequence,State,BackwardOp,ForwardOp)
- )
-};
-
-BOOST_MPL_AUX_NA_SPEC(3, reverse_iter_fold)
-
-}}
-
-#endif // BOOST_MPL_ITER_FOLD_BACKWARD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/at_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/at_impl.hpp
deleted file mode 100644
index ad74477..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/at_impl.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: at_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/at_fwd.hpp>
-#include <boost/mpl/set/aux_/has_key_impl.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/void.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct at_impl< aux::set_tag >
-{
- template< typename Set, typename T > struct apply
- {
- typedef typename if_<
- has_key_impl<aux::set_tag>::apply<Set,T>
- , T
- , void_
- >::type type;
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/begin_end_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/begin_end_impl.hpp
deleted file mode 100644
index f012c2a..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/begin_end_impl.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2007
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: begin_end_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/begin_end_fwd.hpp>
-#include <boost/mpl/set/aux_/iterator.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct begin_impl< aux::set_tag >
-{
- template< typename Set > struct apply
- : s_iter_get<Set,typename Set::item_>
- {
- };
-};
-
-template<>
-struct end_impl< aux::set_tag >
-{
- template< typename Set > struct apply
- {
- typedef s_iter< Set,set0<> > type;
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/clear_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/clear_impl.hpp
deleted file mode 100644
index 4c965f6..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/clear_impl.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: clear_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/clear_fwd.hpp>
-#include <boost/mpl/set/aux_/set0.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct clear_impl< aux::set_tag >
-{
- template< typename Set > struct apply
- {
- typedef set0<> type;
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/empty_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/empty_impl.hpp
deleted file mode 100644
index d40a9c4..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/empty_impl.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: empty_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/empty_fwd.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct empty_impl< aux::set_tag >
-{
- template< typename Set > struct apply
- : not_< typename Set::size >
- {
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/erase_impl.hpp
deleted file mode 100644
index 954a70c..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_impl.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_ERASE_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_ERASE_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: erase_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/erase_fwd.hpp>
-#include <boost/mpl/set/aux_/erase_key_impl.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct erase_impl< aux::set_tag >
-{
- template<
- typename Set
- , typename Pos
- , typename unused_
- >
- struct apply
- : erase_key_impl<aux::set_tag>
- ::apply<Set,typename Pos::type>
- {
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_ERASE_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_key_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/erase_key_impl.hpp
deleted file mode 100644
index 9885196..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/erase_key_impl.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_ERASE_KEY_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_ERASE_KEY_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2007
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: erase_key_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/erase_key_fwd.hpp>
-#include <boost/mpl/set/aux_/has_key_impl.hpp>
-#include <boost/mpl/set/aux_/item.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/base.hpp>
-#include <boost/mpl/eval_if.hpp>
-
-#include <boost/type_traits/is_same.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct erase_key_impl< aux::set_tag >
-{
- template<
- typename Set
- , typename T
- >
- struct apply
- : eval_if<
- has_key_impl<aux::set_tag>::apply<Set,T>
- , eval_if<
- is_same< T,typename Set::item_type_ >
- , base<Set>
- , identity< s_mask<T,typename Set::item_> >
- >
- , identity<Set>
- >
- {
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_ERASE_KEY_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/has_key_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/has_key_impl.hpp
deleted file mode 100644
index d3cae50..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/has_key_impl.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: has_key_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/set/aux_/tag.hpp>
-#include <boost/mpl/has_key_fwd.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/aux_/overload_names.hpp>
-#include <boost/mpl/aux_/static_cast.hpp>
-#include <boost/mpl/aux_/yes_no.hpp>
-#include <boost/mpl/aux_/type_wrapper.hpp>
-#include <boost/mpl/aux_/config/workaround.hpp>
-#include <boost/mpl/aux_/config/static_constant.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct has_key_impl< aux::set_tag >
-{
- template< typename Set, typename T > struct apply
-#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
- || BOOST_WORKAROUND(__EDG_VERSION__, <= 245)
- {
- BOOST_STATIC_CONSTANT(bool, value =
- ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(
- Set
- , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0)
- ) ) == sizeof(aux::no_tag) )
- );
-
- typedef bool_<value> type;
-
-#else // ISO98 C++
- : bool_<
- ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(
- Set
- , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0)
- ) ) == sizeof(aux::no_tag) )
- >
- {
-#endif
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/insert_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/insert_impl.hpp
deleted file mode 100644
index f1d72ec..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/insert_impl.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_INSERT_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_INSERT_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2007
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: insert_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/insert_fwd.hpp>
-#include <boost/mpl/set/aux_/has_key_impl.hpp>
-#include <boost/mpl/set/aux_/item.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/base.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/aux_/na.hpp>
-
-#include <boost/type_traits/is_same.hpp>
-
-namespace boost { namespace mpl {
-
-namespace aux {
-template< typename Set, typename T > struct set_insert_impl
- : eval_if<
- has_key_impl<aux::set_tag>::apply<Set,T>
- , identity<Set>
- , eval_if<
- is_same< T,typename Set::last_masked_ >
- , base<Set>
- , identity< s_item<T,typename Set::item_> >
- >
- >
-{
-};
-}
-
-template<>
-struct insert_impl< aux::set_tag >
-{
- template<
- typename Set
- , typename PosOrKey
- , typename KeyOrNA
- >
- struct apply
- : aux::set_insert_impl<
- Set
- , typename if_na<KeyOrNA,PosOrKey>::type
- >
- {
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_INSERT_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/item.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/item.hpp
deleted file mode 100644
index b9ca19e..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/item.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_ITEM_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_ITEM_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2007
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: item.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/long.hpp>
-#include <boost/mpl/void.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/prior.hpp>
-#include <boost/mpl/set/aux_/set0.hpp>
-#include <boost/mpl/aux_/type_wrapper.hpp>
-#include <boost/mpl/aux_/config/arrays.hpp>
-
-namespace boost { namespace mpl {
-
-template< typename T, typename Base >
-struct s_item
- : Base
-{
- typedef s_item<T,Base> item_;
- typedef void_ last_masked_;
- typedef T item_type_;
- typedef Base base;
-
- typedef typename next< typename Base::size >::type size;
- typedef typename next< typename Base::order >::type order;
-
-#if defined(BOOST_MPL_CFG_NO_DEPENDENT_ARRAY_TYPES)
- typedef typename aux::weighted_tag<BOOST_MPL_AUX_MSVC_VALUE_WKND(order)::value>::type order_tag_;
-#else
- typedef char (&order_tag_)[BOOST_MPL_AUX_MSVC_VALUE_WKND(order)::value];
-#endif
-
- BOOST_MPL_AUX_SET_OVERLOAD( order_tag_, ORDER_BY_KEY, s_item, aux::type_wrapper<T>* );
- BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_item, aux::type_wrapper<T>* );
-};
-
-
-template< typename T, typename Base >
-struct s_mask
- : Base
-{
- typedef s_mask<T,Base> item_;
- typedef T last_masked_;
- typedef void_ item_type_;
- typedef Base base;
- typedef typename prior< typename Base::size >::type size;
-
- BOOST_MPL_AUX_SET_OVERLOAD( aux::yes_tag, IS_MASKED, s_mask, aux::type_wrapper<T>* );
-};
-
-
-template< typename T, typename Base >
-struct s_unmask
- : Base
-{
- typedef s_unmask<T,Base> item_;
- typedef void_ last_masked_;
- typedef T item_type_;
- typedef Base base;
- typedef typename next< typename Base::size >::type size;
-
- BOOST_MPL_AUX_SET_OVERLOAD( aux::no_tag, IS_MASKED, s_unmask, aux::type_wrapper<T>* );
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_ITEM_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/iterator.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/iterator.hpp
deleted file mode 100644
index 90666a6..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/iterator.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_ITERATOR_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_ITERATOR_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2007
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: iterator.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/set/aux_/set0.hpp>
-#include <boost/mpl/has_key.hpp>
-#include <boost/mpl/iterator_tags.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/aux_/config/ctps.hpp>
-
-namespace boost { namespace mpl {
-
-// used by 's_iter_get'
-template< typename Set, typename Tail > struct s_iter;
-
-template< typename Set, typename Tail > struct s_iter_get
- : eval_if<
- has_key< Set,typename Tail::item_type_ >
- , identity< s_iter<Set,Tail> >
- , next< s_iter<Set,Tail> >
- >
-{
-};
-
-template< typename Set, typename Tail > struct s_iter_impl
-{
- typedef Tail tail_;
- typedef forward_iterator_tag category;
- typedef typename Tail::item_type_ type;
-
-#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- typedef typename s_iter_get< Set,typename Tail::base >::type next;
-#endif
-};
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-
-template< typename Set, typename Tail >
-struct next< s_iter<Set,Tail> >
- : s_iter_get< Set,typename Tail::base >
-{
-};
-
-template< typename Set >
-struct next< s_iter<Set,set0<> > >
-{
- typedef s_iter<Set,set0<> > type;
-};
-
-template< typename Set, typename Tail > struct s_iter
- : s_iter_impl<Set,Tail>
-{
-};
-
-template< typename Set > struct s_iter<Set, set0<> >
-{
- typedef forward_iterator_tag category;
-};
-
-#else
-
-template< typename Set >
-struct s_end_iter
-{
- typedef forward_iterator_tag category;
- typedef s_iter<Set,set0<> > next;
-};
-
-template< typename Set, typename Tail > struct s_iter
- : if_<
- is_same< Tail,set0<> >
- , s_end_iter<Set>
- , s_iter_impl<Set,Tail>
- >::type
-{
-};
-
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_ITERATOR_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/key_type_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/key_type_impl.hpp
deleted file mode 100644
index 23b1a18..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/key_type_impl.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_KEY_TYPE_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_KEY_TYPE_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: key_type_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/key_type_fwd.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct key_type_impl< aux::set_tag >
-{
- template< typename Set, typename T > struct apply
- {
- typedef T type;
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_KEY_TYPE_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/set0.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/set0.hpp
deleted file mode 100644
index 58f1d7d..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/set0.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: set0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/long.hpp>
-#include <boost/mpl/void.hpp>
-#include <boost/mpl/aux_/na.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-#include <boost/mpl/aux_/yes_no.hpp>
-#include <boost/mpl/aux_/overload_names.hpp>
-#include <boost/mpl/aux_/config/operators.hpp>
-
-#include <boost/preprocessor/cat.hpp>
-
-namespace boost { namespace mpl {
-
-#if defined(BOOST_MPL_CFG_USE_OPERATORS_OVERLOADING)
-
-# define BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \
- friend R BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f)(X const&, T) \
-/**/
-
-# define BOOST_MPL_AUX_SET_OVERLOAD(R, f, X, T) \
- BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \
-/**/
-
-#else
-
-# define BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T) \
- static R BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f)(X const&, T) \
-/**/
-
-# define BOOST_MPL_AUX_SET_OVERLOAD(R, f, X, T) \
- BOOST_MPL_AUX_SET0_OVERLOAD(R, f, X, T); \
- using Base::BOOST_PP_CAT(BOOST_MPL_AUX_OVERLOAD_,f) \
-/**/
-
-#endif
-
-template< typename Dummy = na > struct set0
-{
- typedef set0<> item_;
- typedef item_ type;
- typedef aux::set_tag tag;
- typedef void_ last_masked_;
- typedef void_ item_type_;
- typedef long_<0> size;
- typedef long_<1> order;
-
- BOOST_MPL_AUX_SET0_OVERLOAD( aux::no_tag, ORDER_BY_KEY, set0<>, void const volatile* );
- BOOST_MPL_AUX_SET0_OVERLOAD( aux::yes_tag, IS_MASKED, set0<>, void const volatile* );
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_SET0_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/size_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/size_impl.hpp
deleted file mode 100644
index 0443776..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/size_impl.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: size_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/size_fwd.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct size_impl< aux::set_tag >
-{
- template< typename Set > struct apply
- : Set::size
- {
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/tag.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/tag.hpp
deleted file mode 100644
index 651ed44..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/tag.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_TAG_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_TAG_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: tag.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-namespace boost { namespace mpl { namespace aux {
-
-struct set_tag;
-
-}}}
-
-#endif // BOOST_MPL_SET_AUX_TAG_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/aux_/value_type_impl.hpp b/3rdParty/Boost/src/boost/mpl/set/aux_/value_type_impl.hpp
deleted file mode 100644
index 7166dae..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/aux_/value_type_impl.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-
-#ifndef BOOST_MPL_SET_AUX_VALUE_TYPE_IMPL_HPP_INCLUDED
-#define BOOST_MPL_SET_AUX_VALUE_TYPE_IMPL_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: value_type_impl.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/value_type_fwd.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-
-namespace boost { namespace mpl {
-
-template<>
-struct value_type_impl< aux::set_tag >
-{
- template< typename Set, typename T > struct apply
- {
- typedef T type;
- };
-};
-
-}}
-
-#endif // BOOST_MPL_SET_AUX_VALUE_TYPE_IMPL_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/set/set0.hpp b/3rdParty/Boost/src/boost/mpl/set/set0.hpp
deleted file mode 100644
index f6e5b60..0000000
--- a/3rdParty/Boost/src/boost/mpl/set/set0.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-
-#ifndef BOOST_MPL_SET_SET0_HPP_INCLUDED
-#define BOOST_MPL_SET_SET0_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: set0.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-#include <boost/mpl/set/aux_/at_impl.hpp>
-#include <boost/mpl/set/aux_/clear_impl.hpp>
-//#include <boost/mpl/set/aux_/O1_size.hpp>
-#include <boost/mpl/set/aux_/size_impl.hpp>
-#include <boost/mpl/set/aux_/empty_impl.hpp>
-#include <boost/mpl/set/aux_/insert_impl.hpp>
-#include <boost/mpl/set/aux_/erase_impl.hpp>
-#include <boost/mpl/set/aux_/erase_key_impl.hpp>
-#include <boost/mpl/set/aux_/has_key_impl.hpp>
-#include <boost/mpl/set/aux_/key_type_impl.hpp>
-#include <boost/mpl/set/aux_/value_type_impl.hpp>
-#include <boost/mpl/set/aux_/begin_end_impl.hpp>
-#include <boost/mpl/set/aux_/iterator.hpp>
-#include <boost/mpl/set/aux_/item.hpp>
-#include <boost/mpl/set/aux_/set0.hpp>
-#include <boost/mpl/set/aux_/tag.hpp>
-
-#endif // BOOST_MPL_SET_SET0_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/mpl/value_type_fwd.hpp b/3rdParty/Boost/src/boost/mpl/value_type_fwd.hpp
deleted file mode 100644
index 96de3ad..0000000
--- a/3rdParty/Boost/src/boost/mpl/value_type_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-
-#ifndef BOOST_MPL_VALUE_TYPE_FWD_HPP_INCLUDED
-#define BOOST_MPL_VALUE_TYPE_FWD_HPP_INCLUDED
-
-// Copyright Aleksey Gurtovoy 2003-2004
-// Copyright David Abrahams 2003-2004
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/mpl for documentation.
-
-// $Id: value_type_fwd.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
-// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
-// $Revision: 49267 $
-
-namespace boost { namespace mpl {
-
-template< typename Tag > struct value_type_impl;
-template< typename AssociativeSequence, typename T > struct value_type;
-
-}}
-
-#endif // BOOST_MPL_VALUE_TYPE_FWD_HPP_INCLUDED
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/access_specifier.hpp b/3rdParty/Boost/src/boost/multi_index/detail/access_specifier.hpp
deleted file mode 100644
index 84c2f7d..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/access_specifier.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_ACCESS_SPECIFIER_HPP
-#define BOOST_MULTI_INDEX_DETAIL_ACCESS_SPECIFIER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-/* In those compilers that do not accept the member template friend syntax,
- * some protected and private sections might need to be specified as
- * public.
- */
-
-#if defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
-#define BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS public
-#define BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS public
-#else
-#define BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS protected
-#define BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS private
-#endif
-
-/* GCC does not correctly support in-class using declarations for template
- * functions. See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=9810
- * MSVC 7.1/8.0 seem to have a similar problem, though the conditions in
- * which the error happens are not that simple. I have yet to isolate this
- * into a snippet suitable for bug reporting.
- * Sun Studio also has this problem, which might be related, from the
- * information gathered at Sun forums, with a known issue notified at the
- * internal bug report 6421933. The bug is present up to Studio Express 2,
- * the latest preview version of the future Sun Studio 12. As of this writing
- * (October 2006) it is not known whether a fix will finally make it into the
- * official Sun Studio 12.
- */
-
-#if BOOST_WORKAROUND(__GNUC__, <3)||\
- BOOST_WORKAROUND(__GNUC__,==3)&&(__GNUC_MINOR__<4)||\
- BOOST_WORKAROUND(BOOST_MSVC,==1310)||\
- BOOST_WORKAROUND(BOOST_MSVC,==1400)||\
- BOOST_WORKAROUND(__SUNPRO_CC,BOOST_TESTED_AT(0x590))
-#define BOOST_MULTI_INDEX_PRIVATE_IF_USING_DECL_FOR_TEMPL_FUNCTIONS public
-#else
-#define BOOST_MULTI_INDEX_PRIVATE_IF_USING_DECL_FOR_TEMPL_FUNCTIONS private
-#endif
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/adl_swap.hpp b/3rdParty/Boost/src/boost/multi_index/detail/adl_swap.hpp
deleted file mode 100644
index e78235d..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/adl_swap.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_ADL_SWAP_HPP
-#define BOOST_MULTI_INDEX_DETAIL_ADL_SWAP_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-template<typename T>
-void adl_swap(T& x,T& y)
-{
-
-#if !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
- using std::swap;
- swap(x,y);
-#else
- std::swap(x,y);
-#endif
-
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/archive_constructed.hpp b/3rdParty/Boost/src/boost/multi_index/detail/archive_constructed.hpp
deleted file mode 100644
index ee00dfa..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/archive_constructed.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_ARCHIVE_CONSTRUCTED_HPP
-#define BOOST_MULTI_INDEX_DETAIL_ARCHIVE_CONSTRUCTED_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/no_exceptions_support.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/serialization/serialization.hpp>
-#include <boost/type_traits/aligned_storage.hpp>
-#include <boost/type_traits/alignment_of.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* constructs a stack-based object from a serialization archive */
-
-template<typename T>
-struct archive_constructed:private noncopyable
-{
- template<class Archive>
- archive_constructed(Archive& ar,const unsigned int version)
- {
- serialization::load_construct_data_adl(ar,&get(),version);
- BOOST_TRY{
- ar>>get();
- }
- BOOST_CATCH(...){
- (&get())->~T();
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- template<class Archive>
- archive_constructed(const char* name,Archive& ar,const unsigned int version)
- {
- serialization::load_construct_data_adl(ar,&get(),version);
- BOOST_TRY{
- ar>>serialization::make_nvp(name,get());
- }
- BOOST_CATCH(...){
- (&get())->~T();
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- ~archive_constructed()
- {
- (&get())->~T();
- }
-
- T& get(){return *static_cast<T*>(static_cast<void*>(&space));}
-
-private:
- typename aligned_storage<sizeof(T),alignment_of<T>::value>::type space;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/auto_space.hpp b/3rdParty/Boost/src/boost/multi_index/detail/auto_space.hpp
deleted file mode 100644
index 9b0a0dc..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/auto_space.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_AUTO_SPACE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_AUTO_SPACE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/detail/allocator_utilities.hpp>
-#include <boost/multi_index/detail/adl_swap.hpp>
-#include <boost/multi_index/detail/prevent_eti.hpp>
-#include <boost/noncopyable.hpp>
-#include <memory>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* auto_space provides uninitialized space suitably to store
- * a given number of elements of a given type.
- */
-
-/* NB: it is not clear whether using an allocator to handle
- * zero-sized arrays of elements is conformant or not. GCC 3.3.1
- * and prior fail here, other stdlibs handle the issue gracefully.
- * To be on the safe side, the case n==0 is given special treatment.
- * References:
- * GCC Bugzilla, "standard allocator crashes when deallocating segment
- * "of zero length", http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14176
- * C++ Standard Library Defect Report List (Revision 28), issue 199
- * "What does allocate(0) return?",
- * http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/lwg-defects.html#199
- */
-
-template<typename T,typename Allocator=std::allocator<T> >
-struct auto_space:private noncopyable
-{
- typedef typename prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,T
- >::type
- >::type::pointer pointer;
-
- explicit auto_space(const Allocator& al=Allocator(),std::size_t n=1):
- al_(al),n_(n),data_(n_?al_.allocate(n_):pointer(0))
- {}
-
- ~auto_space()
- {
- if(n_)al_.deallocate(data_,n_);
- }
-
- Allocator get_allocator()const{return al_;}
-
- pointer data()const{return data_;}
-
- void swap(auto_space& x)
- {
- if(al_!=x.al_)adl_swap(al_,x.al_);
- std::swap(n_,x.n_);
- std::swap(data_,x.data_);
- }
-
-private:
- typename boost::detail::allocator::rebind_to<
- Allocator,T>::type al_;
- std::size_t n_;
- pointer data_;
-};
-
-template<typename T,typename Allocator>
-void swap(auto_space<T,Allocator>& x,auto_space<T,Allocator>& y)
-{
- x.swap(y);
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/base_type.hpp b/3rdParty/Boost/src/boost/multi_index/detail/base_type.hpp
deleted file mode 100644
index d25332e..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/base_type.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_BASE_TYPE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_BASE_TYPE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/workaround.hpp>
-#include <boost/mpl/at.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/multi_index/detail/index_base.hpp>
-#include <boost/multi_index/detail/is_index_list.hpp>
-#include <boost/multi_index/detail/msvc_index_specifier.hpp>
-#include <boost/static_assert.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* MPL machinery to construct a linear hierarchy of indices out of
- * a index list.
- */
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1310)
-struct index_applier
-{
- template<typename IndexSpecifierMeta,typename SuperMeta>
- struct apply:
- msvc_index_specifier<IndexSpecifierMeta::type>::
- template result_index_class<SuperMeta>
- {
- };
-};
-#else
-struct index_applier
-{
- template<typename IndexSpecifierMeta,typename SuperMeta>
- struct apply
- {
- typedef typename IndexSpecifierMeta::type index_specifier;
- typedef typename index_specifier::
- BOOST_NESTED_TEMPLATE index_class<SuperMeta>::type type;
- };
-};
-#endif
-
-template<int N,typename Value,typename IndexSpecifierList,typename Allocator>
-struct nth_layer
-{
- BOOST_STATIC_CONSTANT(int,length=mpl::size<IndexSpecifierList>::value);
-
- typedef typename mpl::eval_if_c<
- N==length,
- mpl::identity<index_base<Value,IndexSpecifierList,Allocator> >,
- mpl::apply2<
- index_applier,
- mpl::at_c<IndexSpecifierList,N>,
- nth_layer<N+1,Value,IndexSpecifierList,Allocator>
- >
- >::type type;
-};
-
-template<typename Value,typename IndexSpecifierList,typename Allocator>
-struct multi_index_base_type:nth_layer<0,Value,IndexSpecifierList,Allocator>
-{
- BOOST_STATIC_ASSERT(detail::is_index_list<IndexSpecifierList>::value);
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/bidir_node_iterator.hpp b/3rdParty/Boost/src/boost/multi_index/detail/bidir_node_iterator.hpp
deleted file mode 100644
index 2155255..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/bidir_node_iterator.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_BIDIR_NODE_ITERATOR_HPP
-#define BOOST_MULTI_INDEX_DETAIL_BIDIR_NODE_ITERATOR_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/operators.hpp>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-#include <boost/serialization/nvp.hpp>
-#include <boost/serialization/split_member.hpp>
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Iterator class for node-based indices with bidirectional
- * iterators (ordered and sequenced indices.)
- */
-
-template<typename Node>
-class bidir_node_iterator:
- public bidirectional_iterator_helper<
- bidir_node_iterator<Node>,
- typename Node::value_type,
- std::ptrdiff_t,
- const typename Node::value_type*,
- const typename Node::value_type&>
-{
-public:
- bidir_node_iterator(){}
- explicit bidir_node_iterator(Node* node_):node(node_){}
-
- const typename Node::value_type& operator*()const
- {
- return node->value();
- }
-
- bidir_node_iterator& operator++()
- {
- Node::increment(node);
- return *this;
- }
-
- bidir_node_iterator& operator--()
- {
- Node::decrement(node);
- return *this;
- }
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- /* Serialization. As for why the following is public,
- * see explanation in safe_mode_iterator notes in safe_mode.hpp.
- */
-
- BOOST_SERIALIZATION_SPLIT_MEMBER()
-
- typedef typename Node::base_type node_base_type;
-
- template<class Archive>
- void save(Archive& ar,const unsigned int)const
- {
- node_base_type* bnode=node;
- ar<<serialization::make_nvp("pointer",bnode);
- }
-
- template<class Archive>
- void load(Archive& ar,const unsigned int)
- {
- node_base_type* bnode;
- ar>>serialization::make_nvp("pointer",bnode);
- node=static_cast<Node*>(bnode);
- }
-#endif
-
- /* get_node is not to be used by the user */
-
- typedef Node node_type;
-
- Node* get_node()const{return node;}
-
-private:
- Node* node;
-};
-
-template<typename Node>
-bool operator==(
- const bidir_node_iterator<Node>& x,
- const bidir_node_iterator<Node>& y)
-{
- return x.get_node()==y.get_node();
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/converter.hpp b/3rdParty/Boost/src/boost/multi_index/detail/converter.hpp
deleted file mode 100644
index a46cff6..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/converter.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_CONVERTER_HPP
-#define BOOST_MULTI_INDEX_DETAIL_CONVERTER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* converter offers means to access indices of a given multi_index_container
- * and for convertibilty between index iterators, so providing a
- * localized access point for get() and project() functions.
- */
-
-template<typename MultiIndexContainer,typename Index>
-struct converter
-{
- static const Index& index(const MultiIndexContainer& x){return x;}
- static Index& index(MultiIndexContainer& x){return x;}
-
- static typename Index::const_iterator const_iterator(
- const MultiIndexContainer& x,typename MultiIndexContainer::node_type* node)
- {
- return x.Index::make_iterator(node);
- }
-
- static typename Index::iterator iterator(
- MultiIndexContainer& x,typename MultiIndexContainer::node_type* node)
- {
- return x.Index::make_iterator(node);
- }
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/copy_map.hpp b/3rdParty/Boost/src/boost/multi_index/detail/copy_map.hpp
deleted file mode 100644
index 4279a8d..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/copy_map.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_COPY_MAP_HPP
-#define BOOST_MULTI_INDEX_DETAIL_COPY_MAP_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/detail/no_exceptions_support.hpp>
-#include <boost/multi_index/detail/auto_space.hpp>
-#include <boost/multi_index/detail/prevent_eti.hpp>
-#include <boost/noncopyable.hpp>
-#include <cstddef>
-#include <functional>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* copy_map is used as an auxiliary structure during copy_() operations.
- * When a container with n nodes is replicated, node_map holds the pairings
- * between original and copied nodes, and provides a fast way to find a
- * copied node from an original one.
- * The semantics of the class are not simple, and no attempt has been made
- * to enforce it: multi_index_container handles it right. On the other hand,
- * the const interface, which is the one provided to index implementations,
- * only allows for:
- * - Enumeration of pairs of (original,copied) nodes (excluding the headers),
- * - fast retrieval of copied nodes (including the headers.)
- */
-
-template <typename Node>
-struct copy_map_entry
-{
- copy_map_entry(Node* f,Node* s):first(f),second(s){}
-
- Node* first;
- Node* second;
-
- bool operator<(const copy_map_entry<Node>& x)const
- {
- return std::less<Node*>()(first,x.first);
- }
-};
-
-template <typename Node,typename Allocator>
-class copy_map:private noncopyable
-{
-public:
- typedef const copy_map_entry<Node>* const_iterator;
-
- copy_map(
- const Allocator& al,std::size_t size,Node* header_org,Node* header_cpy):
- al_(al),size_(size),spc(al_,size_),n(0),
- header_org_(header_org),header_cpy_(header_cpy),released(false)
- {}
-
- ~copy_map()
- {
- if(!released){
- for(std::size_t i=0;i<n;++i){
- boost::detail::allocator::destroy(&(spc.data()+i)->second->value());
- deallocate((spc.data()+i)->second);
- }
- }
- }
-
- const_iterator begin()const{return &*spc.data();}
- const_iterator end()const{return &*(spc.data()+n);}
-
- void clone(Node* node)
- {
- (spc.data()+n)->first=node;
- (spc.data()+n)->second=&*al_.allocate(1);
- BOOST_TRY{
- boost::detail::allocator::construct(
- &(spc.data()+n)->second->value(),node->value());
- }
- BOOST_CATCH(...){
- deallocate((spc.data()+n)->second);
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- ++n;
-
- if(n==size_)std::sort(&*spc.data(),&*spc.data()+size_);
- }
-
- Node* find(Node* node)const
- {
- if(node==header_org_)return header_cpy_;
- return std::lower_bound(
- begin(),end(),copy_map_entry<Node>(node,0))->second;
- }
-
- void release()
- {
- released=true;
- }
-
-private:
- typedef typename prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,Node>::type
- >::type allocator_type;
- typedef typename allocator_type::pointer allocator_pointer;
-
- allocator_type al_;
- std::size_t size_;
- auto_space<copy_map_entry<Node>,Allocator> spc;
- std::size_t n;
- Node* header_org_;
- Node* header_cpy_;
- bool released;
-
- void deallocate(Node* node)
- {
- al_.deallocate(static_cast<allocator_pointer>(node),1);
- }
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/duplicates_iterator.hpp b/3rdParty/Boost/src/boost/multi_index/detail/duplicates_iterator.hpp
deleted file mode 100644
index 027dabd..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/duplicates_iterator.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_DUPLICATES_ITERATOR_HPP
-#define BOOST_MULTI_INDEX_DETAIL_DUPLICATES_ITERATOR_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <cstddef>
-#include <iterator>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* duplicates_operator is given a range of ordered elements and
- * passes only over those which are duplicated.
- */
-
-template<typename Node,typename Predicate>
-class duplicates_iterator
-{
-public:
- typedef typename Node::value_type value_type;
- typedef std::ptrdiff_t difference_type;
- typedef const typename Node::value_type* pointer;
- typedef const typename Node::value_type& reference;
- typedef std::forward_iterator_tag iterator_category;
-
- duplicates_iterator(Node* node_,Node* end_,Predicate pred_):
- node(node_),begin_chunk(0),end(end_),pred(pred_)
- {
- advance();
- }
-
- duplicates_iterator(Node* end_,Predicate pred_):
- node(end_),begin_chunk(end_),end(end_),pred(pred_)
- {
- }
-
- reference operator*()const
- {
- return node->value();
- }
-
- pointer operator->()const
- {
- return &node->value();
- }
-
- duplicates_iterator& operator++()
- {
- Node::increment(node);
- sync();
- return *this;
- }
-
- duplicates_iterator operator++(int)
- {
- duplicates_iterator tmp(*this);
- ++(*this);
- return tmp;
- }
-
- Node* get_node()const{return node;}
-
-private:
- void sync()
- {
- if(node!=end&&pred(begin_chunk->value(),node->value()))advance();
- }
-
- void advance()
- {
- for(Node* node2=node;node!=end;node=node2){
- Node::increment(node2);
- if(node2!=end&&!pred(node->value(),node2->value()))break;
- }
- begin_chunk=node;
- }
-
- Node* node;
- Node* begin_chunk;
- Node* end;
- Predicate pred;
-};
-
-template<typename Node,typename Predicate>
-bool operator==(
- const duplicates_iterator<Node,Predicate>& x,
- const duplicates_iterator<Node,Predicate>& y)
-{
- return x.get_node()==y.get_node();
-}
-
-template<typename Node,typename Predicate>
-bool operator!=(
- const duplicates_iterator<Node,Predicate>& x,
- const duplicates_iterator<Node,Predicate>& y)
-{
- return !(x==y);
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/has_tag.hpp b/3rdParty/Boost/src/boost/multi_index/detail/has_tag.hpp
deleted file mode 100644
index 83b28cc..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/has_tag.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP
-#define BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/contains.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* determines whether an index type has a given tag in its tag list */
-
-template<typename Tag>
-struct has_tag
-{
- template<typename Index>
- struct apply:mpl::contains<BOOST_DEDUCED_TYPENAME Index::tag_list,Tag>
- {
- };
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/header_holder.hpp b/3rdParty/Boost/src/boost/multi_index/detail/header_holder.hpp
deleted file mode 100644
index 8716e83..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/header_holder.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_HEADER_HOLDER_HPP
-#define BOOST_MULTI_INDEX_DETAIL_HEADER_HOLDER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/noncopyable.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* A utility class used to hold a pointer to the header node.
- * The base from member idiom is used because index classes, which are
- * superclasses of multi_index_container, need this header in construction
- * time. The allocation is made by the allocator of the multi_index_container
- * class --hence, this allocator needs also be stored resorting
- * to the base from member trick.
- */
-
-template<typename NodeTypePtr,typename Final>
-struct header_holder:private noncopyable
-{
- header_holder():member(final().allocate_node()){}
- ~header_holder(){final().deallocate_node(&*member);}
-
- NodeTypePtr member;
-
-private:
- Final& final(){return *static_cast<Final*>(this);}
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_base.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_base.hpp
deleted file mode 100644
index 9b73a4b..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/index_base.hpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_BASE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_INDEX_BASE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/call_traits.hpp>
-#include <boost/detail/workaround.hpp>
-#include <boost/mpl/vector.hpp>
-#include <boost/multi_index/detail/copy_map.hpp>
-#include <boost/multi_index/detail/node_type.hpp>
-#include <boost/multi_index_container_fwd.hpp>
-#include <boost/tuple/tuple.hpp>
-#include <utility>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-#include <boost/multi_index/detail/index_loader.hpp>
-#include <boost/multi_index/detail/index_saver.hpp>
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* The role of this class is threefold:
- * - tops the linear hierarchy of indices.
- * - terminates some cascading backbone function calls (insert_, etc.),
- * - grants access to the backbone functions of the final
- * multi_index_container class (for access restriction reasons, these
- * cannot be called directly from the index classes.)
- */
-
-template<typename Value,typename IndexSpecifierList,typename Allocator>
-class index_base
-{
-protected:
- typedef index_node_base<Value,Allocator> node_type;
- typedef typename multi_index_node_type<
- Value,IndexSpecifierList,Allocator>::type final_node_type;
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> final_type;
- typedef tuples::null_type ctor_args_list;
- typedef typename
- boost::detail::allocator::rebind_to<
- Allocator,
- typename Allocator::value_type>::type final_allocator_type;
- typedef mpl::vector0<> index_type_list;
- typedef mpl::vector0<> iterator_type_list;
- typedef mpl::vector0<> const_iterator_type_list;
- typedef copy_map<
- final_node_type,
- final_allocator_type> copy_map_type;
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- typedef index_saver<
- node_type,
- final_allocator_type> index_saver_type;
- typedef index_loader<
- node_type,
- final_node_type,
- final_allocator_type> index_loader_type;
-#endif
-
-private:
- typedef typename call_traits<Value>::param_type value_param_type;
-
-protected:
- explicit index_base(const ctor_args_list&,const Allocator&){}
-
- void copy_(
- const index_base<Value,IndexSpecifierList,Allocator>&,const copy_map_type&)
- {}
-
- node_type* insert_(value_param_type v,node_type* x)
- {
- boost::detail::allocator::construct(&x->value(),v);
- return x;
- }
-
- node_type* insert_(value_param_type v,node_type*,node_type* x)
- {
- boost::detail::allocator::construct(&x->value(),v);
- return x;
- }
-
- void erase_(node_type* x)
- {
- boost::detail::allocator::destroy(&x->value());
- }
-
- void delete_node_(node_type* x)
- {
- boost::detail::allocator::destroy(&x->value());
- }
-
- void clear_(){}
-
- void swap_(index_base<Value,IndexSpecifierList,Allocator>&){}
-
- bool replace_(value_param_type v,node_type* x)
- {
- x->value()=v;
- return true;
- }
-
- bool modify_(node_type*){return true;}
-
- bool modify_rollback_(node_type*){return true;}
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- /* serialization */
-
- template<typename Archive>
- void save_(Archive&,const unsigned int,const index_saver_type&)const{}
-
- template<typename Archive>
- void load_(Archive&,const unsigned int,const index_loader_type&){}
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
- /* invariant stuff */
-
- bool invariant_()const{return true;}
-#endif
-
- /* access to backbone memfuns of Final class */
-
- final_type& final(){return *static_cast<final_type*>(this);}
- const final_type& final()const{return *static_cast<const final_type*>(this);}
-
- final_node_type* final_header()const{return final().header();}
-
- bool final_empty_()const{return final().empty_();}
- std::size_t final_size_()const{return final().size_();}
- std::size_t final_max_size_()const{return final().max_size_();}
-
- std::pair<final_node_type*,bool> final_insert_(value_param_type x)
- {return final().insert_(x);}
- std::pair<final_node_type*,bool> final_insert_(
- value_param_type x,final_node_type* position)
- {return final().insert_(x,position);}
-
- void final_erase_(final_node_type* x){final().erase_(x);}
-
- void final_delete_node_(final_node_type* x){final().delete_node_(x);}
- void final_delete_all_nodes_(){final().delete_all_nodes_();}
- void final_clear_(){final().clear_();}
-
- void final_swap_(final_type& x){final().swap_(x);}
- bool final_replace_(
- value_param_type k,final_node_type* x)
- {return final().replace_(k,x);}
-
- template<typename Modifier>
- bool final_modify_(Modifier& mod,final_node_type* x)
- {return final().modify_(mod,x);}
-
- template<typename Modifier,typename Rollback>
- bool final_modify_(Modifier& mod,Rollback& back,final_node_type* x)
- {return final().modify_(mod,back,x);}
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
- void final_check_invariant_()const{final().check_invariant_();}
-#endif
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_loader.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_loader.hpp
deleted file mode 100644
index 001c01b..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/index_loader.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_LOADER_HPP
-#define BOOST_MULTI_INDEX_DETAIL_INDEX_LOADER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/archive/archive_exception.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/multi_index/detail/auto_space.hpp>
-#include <boost/serialization/nvp.hpp>
-#include <boost/throw_exception.hpp>
-#include <cstddef>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Counterpart of index_saver (check index_saver.hpp for serialization
- * details.)* multi_index_container is in charge of supplying the info about
- * the base sequence, and each index can subsequently load itself using the
- * const interface of index_loader.
- */
-
-template<typename Node,typename FinalNode,typename Allocator>
-class index_loader:private noncopyable
-{
-public:
- index_loader(const Allocator& al,std::size_t size):
- spc(al,size),size_(size),n(0),sorted(false)
- {
- }
-
- template<class Archive>
- void add(Node* node,Archive& ar,const unsigned int)
- {
- ar>>serialization::make_nvp("position",*node);
- entries()[n++]=node;
- }
-
- template<class Archive>
- void add_track(Node* node,Archive& ar,const unsigned int)
- {
- ar>>serialization::make_nvp("position",*node);
- }
-
- /* A rearranger is passed two nodes, and is expected to
- * reposition the second after the first.
- * If the first node is 0, then the second should be moved
- * to the beginning of the sequence.
- */
-
- template<typename Rearranger,class Archive>
- void load(Rearranger r,Archive& ar,const unsigned int)const
- {
- FinalNode* prev=unchecked_load_node(ar);
- if(!prev)return;
-
- if(!sorted){
- std::sort(entries(),entries()+size_);
- sorted=true;
- }
-
- check_node(prev);
-
- for(;;){
- for(;;){
- FinalNode* node=load_node(ar);
- if(!node)break;
-
- if(node==prev)prev=0;
- r(prev,node);
-
- prev=node;
- }
- prev=load_node(ar);
- if(!prev)break;
- }
- }
-
-private:
- Node** entries()const{return &*spc.data();}
-
- /* We try to delay sorting as much as possible just in case it
- * is not necessary, hence this version of load_node.
- */
-
- template<class Archive>
- FinalNode* unchecked_load_node(Archive& ar)const
- {
- Node* node=0;
- ar>>serialization::make_nvp("pointer",node);
- return static_cast<FinalNode*>(node);
- }
-
- template<class Archive>
- FinalNode* load_node(Archive& ar)const
- {
- Node* node=0;
- ar>>serialization::make_nvp("pointer",node);
- check_node(node);
- return static_cast<FinalNode*>(node);
- }
-
- void check_node(Node* node)const
- {
- if(node!=0&&!std::binary_search(entries(),entries()+size_,node)){
- throw_exception(
- archive::archive_exception(
- archive::archive_exception::other_exception));
- }
- }
-
- auto_space<Node*,Allocator> spc;
- std::size_t size_;
- std::size_t n;
- mutable bool sorted;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_matcher.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_matcher.hpp
deleted file mode 100644
index 5828137..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/index_matcher.hpp
+++ /dev/null
@@ -1,248 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_MATCHER_HPP
-#define BOOST_MULTI_INDEX_DETAIL_INDEX_MATCHER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/noncopyable.hpp>
-#include <boost/multi_index/detail/auto_space.hpp>
-#include <cstddef>
-#include <functional>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* index_matcher compares a sequence of elements against a
- * base sequence, identifying those elements that belong to the
- * longest subsequence which is ordered with respect to the base.
- * For instance, if the base sequence is:
- *
- * 0 1 2 3 4 5 6 7 8 9
- *
- * and the compared sequence (not necesarilly the same length):
- *
- * 1 4 2 3 0 7 8 9
- *
- * the elements of the longest ordered subsequence are:
- *
- * 1 2 3 7 8 9
- *
- * The algorithm for obtaining such a subsequence is called
- * Patience Sorting, described in ch. 1 of:
- * Aldous, D., Diaconis, P.: "Longest increasing subsequences: from
- * patience sorting to the Baik-Deift-Johansson Theorem", Bulletin
- * of the American Mathematical Society, vol. 36, no 4, pp. 413-432,
- * July 1999.
- * http://www.ams.org/bull/1999-36-04/S0273-0979-99-00796-X/
- * S0273-0979-99-00796-X.pdf
- *
- * This implementation is not fully generic since it assumes that
- * the sequences given are pointed to by index iterators (having a
- * get_node() memfun.)
- */
-
-namespace index_matcher{
-
-/* The algorithm stores the nodes of the base sequence and a number
- * of "piles" that are dynamically updated during the calculation
- * stage. From a logical point of view, nodes form an independent
- * sequence from piles. They are stored together so as to minimize
- * allocated memory.
- */
-
-struct entry
-{
- entry(void* node_,std::size_t pos_=0):node(node_),pos(pos_){}
-
- /* node stuff */
-
- void* node;
- std::size_t pos;
- entry* previous;
- bool ordered;
-
- struct less_by_node
- {
- bool operator()(
- const entry& x,const entry& y)const
- {
- return std::less<void*>()(x.node,y.node);
- }
- };
-
- /* pile stuff */
-
- std::size_t pile_top;
- entry* pile_top_entry;
-
- struct less_by_pile_top
- {
- bool operator()(
- const entry& x,const entry& y)const
- {
- return x.pile_top<y.pile_top;
- }
- };
-};
-
-/* common code operating on void *'s */
-
-template<typename Allocator>
-class algorithm_base:private noncopyable
-{
-protected:
- algorithm_base(const Allocator& al,std::size_t size):
- spc(al,size),size_(size),n(0),sorted(false)
- {
- }
-
- void add(void* node)
- {
- entries()[n]=entry(node,n);
- ++n;
- }
-
- void begin_algorithm()const
- {
- if(!sorted){
- std::sort(entries(),entries()+size_,entry::less_by_node());
- sorted=true;
- }
- num_piles=0;
- }
-
- void add_node_to_algorithm(void* node)const
- {
- entry* ent=
- std::lower_bound(
- entries(),entries()+size_,
- entry(node),entry::less_by_node()); /* localize entry */
- ent->ordered=false;
- std::size_t n=ent->pos; /* get its position */
-
- entry dummy(0);
- dummy.pile_top=n;
-
- entry* pile_ent= /* find the first available pile */
- std::lower_bound( /* to stack the entry */
- entries(),entries()+num_piles,
- dummy,entry::less_by_pile_top());
-
- pile_ent->pile_top=n; /* stack the entry */
- pile_ent->pile_top_entry=ent;
-
- /* if not the first pile, link entry to top of the preceding pile */
- if(pile_ent>&entries()[0]){
- ent->previous=(pile_ent-1)->pile_top_entry;
- }
-
- if(pile_ent==&entries()[num_piles]){ /* new pile? */
- ++num_piles;
- }
- }
-
- void finish_algorithm()const
- {
- if(num_piles>0){
- /* Mark those elements which are in their correct position, i.e. those
- * belonging to the longest increasing subsequence. These are those
- * elements linked from the top of the last pile.
- */
-
- entry* ent=entries()[num_piles-1].pile_top_entry;
- for(std::size_t n=num_piles;n--;){
- ent->ordered=true;
- ent=ent->previous;
- }
- }
- }
-
- bool is_ordered(void * node)const
- {
- return std::lower_bound(
- entries(),entries()+size_,
- entry(node),entry::less_by_node())->ordered;
- }
-
-private:
- entry* entries()const{return &*spc.data();}
-
- auto_space<entry,Allocator> spc;
- std::size_t size_;
- std::size_t n;
- mutable bool sorted;
- mutable std::size_t num_piles;
-};
-
-/* The algorithm has three phases:
- * - Initialization, during which the nodes of the base sequence are added.
- * - Execution.
- * - Results querying, through the is_ordered memfun.
- */
-
-template<typename Node,typename Allocator>
-class algorithm:private algorithm_base<Allocator>
-{
- typedef algorithm_base<Allocator> super;
-
-public:
- algorithm(const Allocator& al,std::size_t size):super(al,size){}
-
- void add(Node* node)
- {
- super::add(node);
- }
-
- template<typename IndexIterator>
- void execute(IndexIterator first,IndexIterator last)const
- {
- super::begin_algorithm();
-
- for(IndexIterator it=first;it!=last;++it){
- add_node_to_algorithm(get_node(it));
- }
-
- super::finish_algorithm();
- }
-
- bool is_ordered(Node* node)const
- {
- return super::is_ordered(node);
- }
-
-private:
- void add_node_to_algorithm(Node* node)const
- {
- super::add_node_to_algorithm(node);
- }
-
- template<typename IndexIterator>
- static Node* get_node(IndexIterator it)
- {
- return static_cast<Node*>(it.get_node());
- }
-};
-
-} /* namespace multi_index::detail::index_matcher */
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_node_base.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_node_base.hpp
deleted file mode 100644
index ee9f1c6..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/index_node_base.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_NODE_BASE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_INDEX_NODE_BASE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/type_traits/aligned_storage.hpp>
-#include <boost/type_traits/alignment_of.hpp>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-#include <boost/archive/archive_exception.hpp>
-#include <boost/serialization/access.hpp>
-#include <boost/throw_exception.hpp>
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* index_node_base tops the node hierarchy of multi_index_container. It holds
- * the value of the element contained.
- */
-
-template<typename Value>
-struct pod_value_holder
-{
- typename aligned_storage<
- sizeof(Value),
- alignment_of<Value>::value
- >::type space;
-};
-
-template<typename Value,typename Allocator>
-struct index_node_base:private pod_value_holder<Value>
-{
- typedef index_node_base base_type; /* used for serialization purposes */
- typedef Value value_type;
- typedef Allocator allocator_type;
-
- value_type& value()
- {
- return *static_cast<value_type*>(
- static_cast<void*>(&this->space));
- }
-
- const value_type& value()const
- {
- return *static_cast<const value_type*>(
- static_cast<const void*>(&this->space));
- }
-
- static index_node_base* from_value(const value_type* p)
- {
- return static_cast<index_node_base *>(
- reinterpret_cast<pod_value_holder<Value>*>( /* std 9.2.17 */
- const_cast<value_type*>(p)));
- }
-
-private:
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- friend class boost::serialization::access;
-
- /* nodes do not emit any kind of serialization info. They are
- * fed to Boost.Serialization so that pointers to nodes are
- * tracked correctly.
- */
-
- template<class Archive>
- void serialize(Archive&,const unsigned int)
- {
- }
-#endif
-};
-
-template<typename Node,typename Value>
-Node* node_from_value(
- const Value* p
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Node))
-{
- typedef typename Node::allocator_type allocator_type;
- return static_cast<Node*>(
- index_node_base<Value,allocator_type>::from_value(p));
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-/* Index nodes never get constructed directly by Boost.Serialization,
- * as archives are always fed pointers to previously existent
- * nodes. So, if this is called it means we are dealing with a
- * somehow invalid archive.
- */
-
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
-namespace serialization{
-#else
-namespace multi_index{
-namespace detail{
-#endif
-
-template<class Archive,typename Value,typename Allocator>
-inline void load_construct_data(
- Archive&,boost::multi_index::detail::index_node_base<Value,Allocator>*,
- const unsigned int)
-{
- throw_exception(
- archive::archive_exception(archive::archive_exception::other_exception));
-}
-
-#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
-} /* namespace serialization */
-#else
-} /* namespace multi_index::detail */
-} /* namespace multi_index */
-#endif
-
-#endif
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/index_saver.hpp b/3rdParty/Boost/src/boost/multi_index/detail/index_saver.hpp
deleted file mode 100644
index d9e6bc7..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/index_saver.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_INDEX_SAVER_HPP
-#define BOOST_MULTI_INDEX_DETAIL_INDEX_SAVER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/multi_index/detail/index_matcher.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/serialization/nvp.hpp>
-#include <cstddef>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* index_saver accepts a base sequence of previously saved elements
- * and saves a possibly reordered subsequence in an efficient manner,
- * serializing only the information needed to rearrange the subsequence
- * based on the original order of the base.
- * multi_index_container is in charge of supplying the info about the
- * base sequence, and each index can subsequently save itself using the
- * const interface of index_saver.
- */
-
-template<typename Node,typename Allocator>
-class index_saver:private noncopyable
-{
-public:
- index_saver(const Allocator& al,std::size_t size):alg(al,size){}
-
- template<class Archive>
- void add(Node* node,Archive& ar,const unsigned int)
- {
- ar<<serialization::make_nvp("position",*node);
- alg.add(node);
- }
-
- template<class Archive>
- void add_track(Node* node,Archive& ar,const unsigned int)
- {
- ar<<serialization::make_nvp("position",*node);
- }
-
- template<typename IndexIterator,class Archive>
- void save(
- IndexIterator first,IndexIterator last,Archive& ar,
- const unsigned int)const
- {
- /* calculate ordered positions */
-
- alg.execute(first,last);
-
- /* Given a consecutive subsequence of displaced elements
- * x1,...,xn, the following information is serialized:
- *
- * p0,p1,...,pn,0
- *
- * where pi is a pointer to xi and p0 is a pointer to the element
- * preceding x1. Crealy, from this information is possible to
- * restore the original order on loading time. If x1 is the first
- * element in the sequence, the following is serialized instead:
- *
- * p1,p1,...,pn,0
- *
- * For each subsequence of n elements, n+2 pointers are serialized.
- * An optimization policy is applied: consider for instance the
- * sequence
- *
- * a,B,c,D
- *
- * where B and D are displaced, but c is in its correct position.
- * Applying the schema described above we would serialize 6 pointers:
- *
- * p(a),p(B),0
- * p(c),p(D),0
- *
- * but this can be reduced to 5 pointers by treating c as a displaced
- * element:
- *
- * p(a),p(B),p(c),p(D),0
- */
-
- std::size_t last_saved=3; /* distance to last pointer saved */
- for(IndexIterator it=first,prev=first;it!=last;prev=it++,++last_saved){
- if(!alg.is_ordered(get_node(it))){
- if(last_saved>1)save_node(get_node(prev),ar);
- save_node(get_node(it),ar);
- last_saved=0;
- }
- else if(last_saved==2)save_node(null_node(),ar);
- }
- if(last_saved<=2)save_node(null_node(),ar);
-
- /* marks the end of the serialization info for [first,last) */
-
- save_node(null_node(),ar);
- }
-
-private:
- template<typename IndexIterator>
- static Node* get_node(IndexIterator it)
- {
- return it.get_node();
- }
-
- static Node* null_node(){return 0;}
-
- template<typename Archive>
- static void save_node(Node* node,Archive& ar)
- {
- ar<<serialization::make_nvp("pointer",node);
- }
-
- index_matcher::algorithm<Node,Allocator> alg;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/invariant_assert.hpp b/3rdParty/Boost/src/boost/multi_index/detail/invariant_assert.hpp
deleted file mode 100644
index d5fc256..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/invariant_assert.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_INVARIANT_ASSERT_HPP
-#define BOOST_MULTI_INDEX_DETAIL_INVARIANT_ASSERT_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#if !defined(BOOST_MULTI_INDEX_INVARIANT_ASSERT)
-#include <boost/assert.hpp>
-#define BOOST_MULTI_INDEX_INVARIANT_ASSERT BOOST_ASSERT
-#endif
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/is_index_list.hpp b/3rdParty/Boost/src/boost/multi_index/detail/is_index_list.hpp
deleted file mode 100644
index 9ee30ba..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/is_index_list.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_IS_INDEX_LIST_HPP
-#define BOOST_MULTI_INDEX_DETAIL_IS_INDEX_LIST_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/empty.hpp>
-#include <boost/mpl/is_sequence.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-template<typename T>
-struct is_index_list
-{
- BOOST_STATIC_CONSTANT(bool,mpl_sequence=mpl::is_sequence<T>::value);
- BOOST_STATIC_CONSTANT(bool,non_empty=!mpl::empty<T>::value);
- BOOST_STATIC_CONSTANT(bool,value=mpl_sequence&&non_empty);
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/iter_adaptor.hpp b/3rdParty/Boost/src/boost/multi_index/detail/iter_adaptor.hpp
deleted file mode 100644
index 0346184..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/iter_adaptor.hpp
+++ /dev/null
@@ -1,325 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_ITER_ADAPTOR_HPP
-#define BOOST_MULTI_INDEX_DETAIL_ITER_ADAPTOR_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/apply.hpp>
-#include <boost/multi_index/detail/prevent_eti.hpp>
-#include <boost/operators.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Poor man's version of boost::iterator_adaptor. Used instead of the
- * original as compile times for the latter are significantly higher.
- * The interface is not replicated exactly, only to the extent necessary
- * for internal consumption.
- */
-
-/* NB. The purpose of the (non-inclass) global operators ==, < and - defined
- * above is to partially alleviate a problem of MSVC++ 6.0 by * which
- * friend-injected operators on T are not visible if T is instantiated only
- * in template code where T is a dependent type.
- */
-
-class iter_adaptor_access
-{
-public:
- template<class Class>
- static typename Class::reference dereference(const Class& x)
- {
- return x.dereference();
- }
-
- template<class Class>
- static bool equal(const Class& x,const Class& y)
- {
- return x.equal(y);
- }
-
- template<class Class>
- static void increment(Class& x)
- {
- x.increment();
- }
-
- template<class Class>
- static void decrement(Class& x)
- {
- x.decrement();
- }
-
- template<class Class>
- static void advance(Class& x,typename Class::difference_type n)
- {
- x.advance(n);
- }
-
- template<class Class>
- static typename Class::difference_type distance_to(
- const Class& x,const Class& y)
- {
- return x.distance_to(y);
- }
-};
-
-template<typename Category>
-struct iter_adaptor_selector;
-
-template<class Derived,class Base>
-class forward_iter_adaptor_base:
- public forward_iterator_helper<
- Derived,
- typename Base::value_type,
- typename Base::difference_type,
- typename Base::pointer,
- typename Base::reference>
-{
-public:
- typedef typename Base::reference reference;
-
- reference operator*()const
- {
- return iter_adaptor_access::dereference(final());
- }
-
- friend bool operator==(const Derived& x,const Derived& y)
- {
- return iter_adaptor_access::equal(x,y);
- }
-
- Derived& operator++()
- {
- iter_adaptor_access::increment(final());
- return final();
- }
-
-private:
- Derived& final(){return *static_cast<Derived*>(this);}
- const Derived& final()const{return *static_cast<const Derived*>(this);}
-};
-
-template<class Derived,class Base>
-bool operator==(
- const forward_iter_adaptor_base<Derived,Base>& x,
- const forward_iter_adaptor_base<Derived,Base>& y)
-{
- return iter_adaptor_access::equal(
- static_cast<const Derived&>(x),static_cast<const Derived&>(y));
-}
-
-template<>
-struct iter_adaptor_selector<std::forward_iterator_tag>
-{
- template<class Derived,class Base>
- struct apply
- {
- typedef forward_iter_adaptor_base<Derived,Base> type;
- };
-};
-
-template<class Derived,class Base>
-class bidirectional_iter_adaptor_base:
- public bidirectional_iterator_helper<
- Derived,
- typename Base::value_type,
- typename Base::difference_type,
- typename Base::pointer,
- typename Base::reference>
-{
-public:
- typedef typename Base::reference reference;
-
- reference operator*()const
- {
- return iter_adaptor_access::dereference(final());
- }
-
- friend bool operator==(const Derived& x,const Derived& y)
- {
- return iter_adaptor_access::equal(x,y);
- }
-
- Derived& operator++()
- {
- iter_adaptor_access::increment(final());
- return final();
- }
-
- Derived& operator--()
- {
- iter_adaptor_access::decrement(final());
- return final();
- }
-
-private:
- Derived& final(){return *static_cast<Derived*>(this);}
- const Derived& final()const{return *static_cast<const Derived*>(this);}
-};
-
-template<class Derived,class Base>
-bool operator==(
- const bidirectional_iter_adaptor_base<Derived,Base>& x,
- const bidirectional_iter_adaptor_base<Derived,Base>& y)
-{
- return iter_adaptor_access::equal(
- static_cast<const Derived&>(x),static_cast<const Derived&>(y));
-}
-
-template<>
-struct iter_adaptor_selector<std::bidirectional_iterator_tag>
-{
- template<class Derived,class Base>
- struct apply
- {
- typedef bidirectional_iter_adaptor_base<Derived,Base> type;
- };
-};
-
-template<class Derived,class Base>
-class random_access_iter_adaptor_base:
- public random_access_iterator_helper<
- Derived,
- typename Base::value_type,
- typename Base::difference_type,
- typename Base::pointer,
- typename Base::reference>
-{
-public:
- typedef typename Base::reference reference;
- typedef typename Base::difference_type difference_type;
-
- reference operator*()const
- {
- return iter_adaptor_access::dereference(final());
- }
-
- friend bool operator==(const Derived& x,const Derived& y)
- {
- return iter_adaptor_access::equal(x,y);
- }
-
- friend bool operator<(const Derived& x,const Derived& y)
- {
- return iter_adaptor_access::distance_to(x,y)>0;
- }
-
- Derived& operator++()
- {
- iter_adaptor_access::increment(final());
- return final();
- }
-
- Derived& operator--()
- {
- iter_adaptor_access::decrement(final());
- return final();
- }
-
- Derived& operator+=(difference_type n)
- {
- iter_adaptor_access::advance(final(),n);
- return final();
- }
-
- Derived& operator-=(difference_type n)
- {
- iter_adaptor_access::advance(final(),-n);
- return final();
- }
-
- friend difference_type operator-(const Derived& x,const Derived& y)
- {
- return iter_adaptor_access::distance_to(y,x);
- }
-
-private:
- Derived& final(){return *static_cast<Derived*>(this);}
- const Derived& final()const{return *static_cast<const Derived*>(this);}
-};
-
-template<class Derived,class Base>
-bool operator==(
- const random_access_iter_adaptor_base<Derived,Base>& x,
- const random_access_iter_adaptor_base<Derived,Base>& y)
-{
- return iter_adaptor_access::equal(
- static_cast<const Derived&>(x),static_cast<const Derived&>(y));
-}
-
-template<class Derived,class Base>
-bool operator<(
- const random_access_iter_adaptor_base<Derived,Base>& x,
- const random_access_iter_adaptor_base<Derived,Base>& y)
-{
- return iter_adaptor_access::distance_to(
- static_cast<const Derived&>(x),static_cast<const Derived&>(y))>0;
-}
-
-template<class Derived,class Base>
-typename random_access_iter_adaptor_base<Derived,Base>::difference_type
-operator-(
- const random_access_iter_adaptor_base<Derived,Base>& x,
- const random_access_iter_adaptor_base<Derived,Base>& y)
-{
- return iter_adaptor_access::distance_to(
- static_cast<const Derived&>(y),static_cast<const Derived&>(x));
-}
-
-template<>
-struct iter_adaptor_selector<std::random_access_iterator_tag>
-{
- template<class Derived,class Base>
- struct apply
- {
- typedef random_access_iter_adaptor_base<Derived,Base> type;
- };
-};
-
-template<class Derived,class Base>
-struct iter_adaptor_base
-{
- typedef iter_adaptor_selector<
- typename Base::iterator_category> selector;
- typedef typename prevent_eti<
- selector,
- typename mpl::apply2<
- selector,Derived,Base>::type
- >::type type;
-};
-
-template<class Derived,class Base>
-class iter_adaptor:public iter_adaptor_base<Derived,Base>::type
-{
-protected:
- iter_adaptor(){}
- explicit iter_adaptor(const Base& b_):b(b_){}
-
- const Base& base_reference()const{return b;}
- Base& base_reference(){return b;}
-
-private:
- Base b;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/modify_key_adaptor.hpp b/3rdParty/Boost/src/boost/multi_index/detail/modify_key_adaptor.hpp
deleted file mode 100644
index 8a93b96..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/modify_key_adaptor.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_MODIFY_KEY_ADAPTOR_HPP
-#define BOOST_MULTI_INDEX_DETAIL_MODIFY_KEY_ADAPTOR_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Functional adaptor to resolve modify_key as a call to modify.
- * Preferred over compose_f_gx and stuff cause it eliminates problems
- * with references to references, dealing with function pointers, etc.
- */
-
-template<typename Fun,typename Value,typename KeyFromValue>
-struct modify_key_adaptor
-{
-
- modify_key_adaptor(Fun f_,KeyFromValue kfv_):f(f_),kfv(kfv_){}
-
- void operator()(Value& x)
- {
- f(kfv(x));
- }
-
-private:
- Fun f;
- KeyFromValue kfv;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/msvc_index_specifier.hpp b/3rdParty/Boost/src/boost/multi_index/detail/msvc_index_specifier.hpp
deleted file mode 100644
index 4766e53..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/msvc_index_specifier.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_MSVC_INDEX_SPECIFIER_HPP
-#define BOOST_MULTI_INDEX_DETAIL_MSVC_INDEX_SPECIFIER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1310)
-/* Workaround for a problem in MSVC with dependent template typedefs
- * when accesing index specifiers.
- * Modeled after <boost/mpl/aux_/msvc_dtw.hpp> (thanks, Aleksey!)
- */
-
-#include <boost/mpl/aux_/msvc_never_true.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-template<typename IndexSpecifier>
-struct msvc_index_specifier
-{
- template<bool> struct fake_index_type:IndexSpecifier{};
- template<> struct fake_index_type<true>
- {
- template<typename Super>
- struct node_class{};
-
- template<typename Super>
- struct index_class{};
- };
-
- template<typename Super>
- struct result_node_class:
- fake_index_type<mpl::aux::msvc_never_true<IndexSpecifier>::value>::
- template node_class<Super>
- {
- };
-
- template<typename Super>
- struct result_index_class:
- fake_index_type<mpl::aux::msvc_never_true<IndexSpecifier>::value>::
- template index_class<Super>
- {
- };
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif /* workaround */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/no_duplicate_tags.hpp b/3rdParty/Boost/src/boost/multi_index/detail/no_duplicate_tags.hpp
deleted file mode 100644
index 9b56e83..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/no_duplicate_tags.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_NO_DUPLICATE_TAGS_HPP
-#define BOOST_MULTI_INDEX_DETAIL_NO_DUPLICATE_TAGS_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/fold.hpp>
-#include <boost/mpl/set/set0.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* no_duplicate_tags check at compile-time that a tag list
- * has no duplicate tags.
- * The algorithm deserves some explanation: tags
- * are sequentially inserted into a mpl::set if they were
- * not already present. Due to the magic of mpl::set
- * (mpl::has_key is contant time), this operation takes linear
- * time, and even MSVC++ 6.5 handles it gracefully (other obvious
- * solutions are quadratic.)
- */
-
-struct duplicate_tag_mark{};
-
-struct duplicate_tag_marker
-{
- template <typename MplSet,typename Tag>
- struct apply
- {
- typedef mpl::s_item<
- typename mpl::if_<mpl::has_key<MplSet,Tag>,duplicate_tag_mark,Tag>::type,
- MplSet
- > type;
- };
-};
-
-template<typename TagList>
-struct no_duplicate_tags
-{
- typedef typename mpl::fold<
- TagList,
- mpl::set0<>,
- duplicate_tag_marker
- >::type aux;
-
- BOOST_STATIC_CONSTANT(
- bool,value=!(mpl::has_key<aux,duplicate_tag_mark>::value));
-};
-
-/* Variant for an index list: duplication is checked
- * across all the indices.
- */
-
-struct duplicate_tag_list_marker
-{
- template <typename MplSet,typename Index>
- struct apply:mpl::fold<
- BOOST_DEDUCED_TYPENAME Index::tag_list,
- MplSet,
- duplicate_tag_marker>
- {
- };
-};
-
-template<typename IndexList>
-struct no_duplicate_tags_in_index_list
-{
- typedef typename mpl::fold<
- IndexList,
- mpl::set0<>,
- duplicate_tag_list_marker
- >::type aux;
-
- BOOST_STATIC_CONSTANT(
- bool,value=!(mpl::has_key<aux,duplicate_tag_mark>::value));
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/node_type.hpp b/3rdParty/Boost/src/boost/multi_index/detail/node_type.hpp
deleted file mode 100644
index 0e87261..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/node_type.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_NODE_TYPE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_NODE_TYPE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/workaround.hpp>
-#include <boost/mpl/bind.hpp>
-#include <boost/mpl/reverse_iter_fold.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/multi_index_container_fwd.hpp>
-#include <boost/multi_index/detail/header_holder.hpp>
-#include <boost/multi_index/detail/index_node_base.hpp>
-#include <boost/multi_index/detail/is_index_list.hpp>
-#include <boost/multi_index/detail/msvc_index_specifier.hpp>
-#include <boost/static_assert.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* MPL machinery to construct the internal node type associated to an
- * index list.
- */
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1310)
-struct index_node_applier
-{
- template<typename IndexSpecifierIterator,typename Super>
- struct apply:
- msvc_index_specifier< mpl::deref<IndexSpecifierIterator>::type >::
- template result_node_class<Super>
- {
- };
-};
-#else
-struct index_node_applier
-{
- template<typename IndexSpecifierIterator,typename Super>
- struct apply
- {
- typedef typename mpl::deref<IndexSpecifierIterator>::type index_specifier;
- typedef typename index_specifier::
- BOOST_NESTED_TEMPLATE node_class<Super>::type type;
- };
-};
-#endif
-
-template<typename Value,typename IndexSpecifierList,typename Allocator>
-struct multi_index_node_type
-{
- BOOST_STATIC_ASSERT(detail::is_index_list<IndexSpecifierList>::value);
-
- typedef typename mpl::reverse_iter_fold<
- IndexSpecifierList,
- index_node_base<Value,Allocator>,
- mpl::bind2<index_node_applier,mpl::_2,mpl::_1>
- >::type type;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_args.hpp b/3rdParty/Boost/src/boost/multi_index/detail/ord_index_args.hpp
deleted file mode 100644
index bb8eb41..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_args.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_ARGS_HPP
-#define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_ARGS_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/aux_/na.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/multi_index/tag.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <functional>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Oredered index specifiers can be instantiated in two forms:
- *
- * (ordered_unique|ordered_non_unique)<
- * KeyFromValue,Compare=std::less<KeyFromValue::result_type> >
- * (ordered_unique|ordered_non_unique)<
- * TagList,KeyFromValue,Compare=std::less<KeyFromValue::result_type> >
- *
- * index_args implements the machinery to accept this argument-dependent
- * polymorphism.
- */
-
-template<typename KeyFromValue>
-struct index_args_default_compare
-{
- typedef std::less<typename KeyFromValue::result_type> type;
-};
-
-template<typename Arg1,typename Arg2,typename Arg3>
-struct ordered_index_args
-{
- typedef is_tag<Arg1> full_form;
-
- typedef typename mpl::if_<
- full_form,
- Arg1,
- tag< > >::type tag_list_type;
- typedef typename mpl::if_<
- full_form,
- Arg2,
- Arg1>::type key_from_value_type;
- typedef typename mpl::if_<
- full_form,
- Arg3,
- Arg2>::type supplied_compare_type;
- typedef typename mpl::eval_if<
- mpl::is_na<supplied_compare_type>,
- index_args_default_compare<key_from_value_type>,
- mpl::identity<supplied_compare_type>
- >::type compare_type;
-
- BOOST_STATIC_ASSERT(is_tag<tag_list_type>::value);
- BOOST_STATIC_ASSERT(!mpl::is_na<key_from_value_type>::value);
- BOOST_STATIC_ASSERT(!mpl::is_na<compare_type>::value);
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_node.hpp b/3rdParty/Boost/src/boost/multi_index/detail/ord_index_node.hpp
deleted file mode 100644
index edc4329..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_node.hpp
+++ /dev/null
@@ -1,650 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- *
- * The internal implementation of red-black trees is based on that of SGI STL
- * stl_tree.h file:
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_NODE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_NODE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <cstddef>
-#include <boost/detail/allocator_utilities.hpp>
-#include <boost/multi_index/detail/prevent_eti.hpp>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_COMPRESSED_ORDERED_INDEX_NODES)
-#include <boost/mpl/and.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/multi_index/detail/uintptr_type.hpp>
-#include <boost/type_traits/alignment_of.hpp>
-#include <boost/type_traits/is_same.hpp>
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* definition of red-black nodes for ordered_index */
-
-enum ordered_index_color{red=false,black=true};
-enum ordered_index_side{to_left=false,to_right=true};
-
-template<typename Allocator>
-struct ordered_index_node_impl; /* fwd decl. */
-
-template<typename Allocator>
-struct ordered_index_node_std_base
-{
- typedef typename prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,
- ordered_index_node_impl<Allocator>
- >::type
- >::type::pointer pointer;
- typedef typename prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,
- ordered_index_node_impl<Allocator>
- >::type
- >::type::const_pointer const_pointer;
- typedef ordered_index_color& color_ref;
- typedef pointer& parent_ref;
-
- ordered_index_color& color(){return color_;}
- ordered_index_color color()const{return color_;}
- pointer& parent(){return parent_;}
- pointer parent()const{return parent_;}
- pointer& left(){return left_;}
- pointer left()const{return left_;}
- pointer& right(){return right_;}
- pointer right()const{return right_;}
-
-private:
- ordered_index_color color_;
- pointer parent_;
- pointer left_;
- pointer right_;
-};
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_COMPRESSED_ORDERED_INDEX_NODES)
-/* If ordered_index_node_impl has even alignment, we can use the least
- * significant bit of one of the ordered_index_node_impl pointers to
- * store color information. This typically reduces the size of
- * ordered_index_node_impl by 25%.
- */
-
-#if defined(BOOST_MSVC)
-/* This code casts pointers to an integer type that has been computed
- * to be large enough to hold the pointer, however the metaprogramming
- * logic is not always spotted by the VC++ code analyser that issues a
- * long list of warnings.
- */
-
-#pragma warning(push)
-#pragma warning(disable:4312 4311)
-#endif
-
-template<typename Allocator>
-struct ordered_index_node_compressed_base
-{
- typedef ordered_index_node_impl<Allocator>* pointer;
- typedef const ordered_index_node_impl<Allocator>* const_pointer;
-
- struct color_ref
- {
- color_ref(uintptr_type* r_):r(r_){}
-
- operator ordered_index_color()const
- {
- return ordered_index_color(*r&uintptr_type(1));
- }
-
- color_ref& operator=(ordered_index_color c)
- {
- *r&=~uintptr_type(1);
- *r|=uintptr_type(c);
- return *this;
- }
-
- color_ref& operator=(const color_ref& x)
- {
- return operator=(x.operator ordered_index_color());
- }
-
- private:
- uintptr_type* r;
- };
-
- struct parent_ref
- {
- parent_ref(uintptr_type* r_):r(r_){}
-
- operator pointer()const
- {
- return (pointer)(void*)(*r&~uintptr_type(1));
- }
-
- parent_ref& operator=(pointer p)
- {
- *r=((uintptr_type)(void*)p)|(*r&uintptr_type(1));
- return *this;
- }
-
- parent_ref& operator=(const parent_ref& x)
- {
- return operator=(x.operator pointer());
- }
-
- pointer operator->()const
- {
- return operator pointer();
- }
-
- private:
- uintptr_type* r;
- };
-
- color_ref color(){return color_ref(&parentcolor_);}
- ordered_index_color color()const
- {
- return ordered_index_color(parentcolor_&std::size_t(1ul));
- }
-
- parent_ref parent(){return parent_ref(&parentcolor_);}
- pointer parent()const
- {
- return (pointer)(void*)(parentcolor_&~uintptr_type(1));
- }
-
- pointer& left(){return left_;}
- pointer left()const{return left_;}
- pointer& right(){return right_;}
- pointer right()const{return right_;}
-
-private:
- uintptr_type parentcolor_;
- pointer left_;
- pointer right_;
-};
-#if defined(BOOST_MSVC)
-#pragma warning(pop)
-#endif
-#endif
-
-template<typename Allocator>
-struct ordered_index_node_impl_base:
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_COMPRESSED_ORDERED_INDEX_NODES)
- mpl::if_c<
- !(has_uintptr_type::value)||
- (alignment_of<ordered_index_node_compressed_base<Allocator> >::value%2)||
- !(is_same<
- typename prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,
- ordered_index_node_impl<Allocator>
- >::type
- >::type::pointer,
- ordered_index_node_impl<Allocator>*>::value),
- ordered_index_node_std_base<Allocator>,
- ordered_index_node_compressed_base<Allocator>
- >::type
-#else
- ordered_index_node_std_base<Allocator>
-#endif
-
-{};
-
-template<typename Allocator>
-struct ordered_index_node_impl:ordered_index_node_impl_base<Allocator>
-{
-private:
- typedef ordered_index_node_impl_base<Allocator> super;
-
-public:
- typedef typename super::color_ref color_ref;
- typedef typename super::parent_ref parent_ref;
- typedef typename super::pointer pointer;
- typedef typename super::const_pointer const_pointer;
-
- /* interoperability with bidir_node_iterator */
-
- static void increment(pointer& x)
- {
- if(x->right()!=pointer(0)){
- x=x->right();
- while(x->left()!=pointer(0))x=x->left();
- }
- else{
- pointer y=x->parent();
- while(x==y->right()){
- x=y;
- y=y->parent();
- }
- if(x->right()!=y)x=y;
- }
- }
-
- static void decrement(pointer& x)
- {
- if(x->color()==red&&x->parent()->parent()==x){
- x=x->right();
- }
- else if(x->left()!=pointer(0)){
- pointer y=x->left();
- while(y->right()!=pointer(0))y=y->right();
- x=y;
- }else{
- pointer y=x->parent();
- while(x==y->left()){
- x=y;
- y=y->parent();
- }
- x=y;
- }
- }
-
- /* algorithmic stuff */
-
- static void rotate_left(pointer x,parent_ref root)
- {
- pointer y=x->right();
- x->right()=y->left();
- if(y->left()!=pointer(0))y->left()->parent()=x;
- y->parent()=x->parent();
-
- if(x==root) root=y;
- else if(x==x->parent()->left())x->parent()->left()=y;
- else x->parent()->right()=y;
- y->left()=x;
- x->parent()=y;
- }
-
- static pointer minimum(pointer x)
- {
- while(x->left()!=pointer(0))x=x->left();
- return x;
- }
-
- static pointer maximum(pointer x)
- {
- while(x->right()!=pointer(0))x=x->right();
- return x;
- }
-
- static void rotate_right(pointer x,parent_ref root)
- {
- pointer y=x->left();
- x->left()=y->right();
- if(y->right()!=pointer(0))y->right()->parent()=x;
- y->parent()=x->parent();
-
- if(x==root) root=y;
- else if(x==x->parent()->right())x->parent()->right()=y;
- else x->parent()->left()=y;
- y->right()=x;
- x->parent()=y;
- }
-
- static void rebalance(pointer x,parent_ref root)
- {
- x->color()=red;
- while(x!=root&&x->parent()->color()==red){
- if(x->parent()==x->parent()->parent()->left()){
- pointer y=x->parent()->parent()->right();
- if(y!=pointer(0)&&y->color()==red){
- x->parent()->color()=black;
- y->color()=black;
- x->parent()->parent()->color()=red;
- x=x->parent()->parent();
- }
- else{
- if(x==x->parent()->right()){
- x=x->parent();
- rotate_left(x,root);
- }
- x->parent()->color()=black;
- x->parent()->parent()->color()=red;
- rotate_right(x->parent()->parent(),root);
- }
- }
- else{
- pointer y=x->parent()->parent()->left();
- if(y!=pointer(0)&&y->color()==red){
- x->parent()->color()=black;
- y->color()=black;
- x->parent()->parent()->color()=red;
- x=x->parent()->parent();
- }
- else{
- if(x==x->parent()->left()){
- x=x->parent();
- rotate_right(x,root);
- }
- x->parent()->color()=black;
- x->parent()->parent()->color()=red;
- rotate_left(x->parent()->parent(),root);
- }
- }
- }
- root->color()=black;
- }
-
- static void link(
- pointer x,ordered_index_side side,pointer position,pointer header)
- {
- if(side==to_left){
- position->left()=x; /* also makes leftmost=x when parent==header */
- if(position==header){
- header->parent()=x;
- header->right()=x;
- }
- else if(position==header->left()){
- header->left()=x; /* maintain leftmost pointing to min node */
- }
- }
- else{
- position->right()=x;
- if(position==header->right()){
- header->right()=x; /* maintain rightmost pointing to max node */
- }
- }
- x->parent()=position;
- x->left()=pointer(0);
- x->right()=pointer(0);
- ordered_index_node_impl::rebalance(x,header->parent());
- }
-
- static pointer rebalance_for_erase(
- pointer z,parent_ref root,pointer& leftmost,pointer& rightmost)
- {
- pointer y=z;
- pointer x=pointer(0);
- pointer x_parent=pointer(0);
- if(y->left()==pointer(0)){ /* z has at most one non-null child. y==z. */
- x=y->right(); /* x might be null */
- }
- else{
- if(y->right()==pointer(0)){ /* z has exactly one non-null child. y==z. */
- x=y->left(); /* x is not null */
- }
- else{ /* z has two non-null children. Set y to */
- y=y->right(); /* z's successor. x might be null. */
- while(y->left()!=pointer(0))y=y->left();
- x=y->right();
- }
- }
- if(y!=z){
- z->left()->parent()=y; /* relink y in place of z. y is z's successor */
- y->left()=z->left();
- if(y!=z->right()){
- x_parent=y->parent();
- if(x!=pointer(0))x->parent()=y->parent();
- y->parent()->left()=x; /* y must be a child of left */
- y->right()=z->right();
- z->right()->parent()=y;
- }
- else{
- x_parent=y;
- }
-
- if(root==z) root=y;
- else if(z->parent()->left()==z)z->parent()->left()=y;
- else z->parent()->right()=y;
- y->parent()=z->parent();
- ordered_index_color c=y->color();
- y->color()=z->color();
- z->color()=c;
- y=z; /* y now points to node to be actually deleted */
- }
- else{ /* y==z */
- x_parent=y->parent();
- if(x!=pointer(0))x->parent()=y->parent();
- if(root==z){
- root=x;
- }
- else{
- if(z->parent()->left()==z)z->parent()->left()=x;
- else z->parent()->right()=x;
- }
- if(leftmost==z){
- if(z->right()==pointer(0)){ /* z->left() must be null also */
- leftmost=z->parent();
- }
- else{
- leftmost=minimum(x); /* makes leftmost==header if z==root */
- }
- }
- if(rightmost==z){
- if(z->left()==pointer(0)){ /* z->right() must be null also */
- rightmost=z->parent();
- }
- else{ /* x==z->left() */
- rightmost=maximum(x); /* makes rightmost==header if z==root */
- }
- }
- }
- if(y->color()!=red){
- while(x!=root&&(x==pointer(0)|| x->color()==black)){
- if(x==x_parent->left()){
- pointer w=x_parent->right();
- if(w->color()==red){
- w->color()=black;
- x_parent->color()=red;
- rotate_left(x_parent,root);
- w=x_parent->right();
- }
- if((w->left()==pointer(0)||w->left()->color()==black) &&
- (w->right()==pointer(0)||w->right()->color()==black)){
- w->color()=red;
- x=x_parent;
- x_parent=x_parent->parent();
- }
- else{
- if(w->right()==pointer(0 )
- || w->right()->color()==black){
- if(w->left()!=pointer(0)) w->left()->color()=black;
- w->color()=red;
- rotate_right(w,root);
- w=x_parent->right();
- }
- w->color()=x_parent->color();
- x_parent->color()=black;
- if(w->right()!=pointer(0))w->right()->color()=black;
- rotate_left(x_parent,root);
- break;
- }
- }
- else{ /* same as above,with right <-> left */
- pointer w=x_parent->left();
- if(w->color()==red){
- w->color()=black;
- x_parent->color()=red;
- rotate_right(x_parent,root);
- w=x_parent->left();
- }
- if((w->right()==pointer(0)||w->right()->color()==black) &&
- (w->left()==pointer(0)||w->left()->color()==black)){
- w->color()=red;
- x=x_parent;
- x_parent=x_parent->parent();
- }
- else{
- if(w->left()==pointer(0)||w->left()->color()==black){
- if(w->right()!=pointer(0))w->right()->color()=black;
- w->color()=red;
- rotate_left(w,root);
- w=x_parent->left();
- }
- w->color()=x_parent->color();
- x_parent->color()=black;
- if(w->left()!=pointer(0))w->left()->color()=black;
- rotate_right(x_parent,root);
- break;
- }
- }
- }
- if(x!=pointer(0))x->color()=black;
- }
- return y;
- }
-
- static void restore(pointer x,pointer position,pointer header)
- {
- if(position->left()==pointer(0)||position->left()==header){
- link(x,to_left,position,header);
- }
- else{
- decrement(position);
- link(x,to_right,position,header);
- }
- }
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
- /* invariant stuff */
-
- static std::size_t black_count(pointer node,pointer root)
- {
- if(node==pointer(0))return 0;
- std::size_t sum=0;
- for(;;){
- if(node->color()==black)++sum;
- if(node==root)break;
- node=node->parent();
- }
- return sum;
- }
-#endif
-};
-
-template<typename Super>
-struct ordered_index_node_trampoline:
- prevent_eti<
- Super,
- ordered_index_node_impl<
- typename boost::detail::allocator::rebind_to<
- typename Super::allocator_type,
- char
- >::type
- >
- >::type
-{
- typedef typename prevent_eti<
- Super,
- ordered_index_node_impl<
- typename boost::detail::allocator::rebind_to<
- typename Super::allocator_type,
- char
- >::type
- >
- >::type impl_type;
-};
-
-template<typename Super>
-struct ordered_index_node:Super,ordered_index_node_trampoline<Super>
-{
-private:
- typedef ordered_index_node_trampoline<Super> trampoline;
-
-public:
- typedef typename trampoline::impl_type impl_type;
- typedef typename trampoline::color_ref impl_color_ref;
- typedef typename trampoline::parent_ref impl_parent_ref;
- typedef typename trampoline::pointer impl_pointer;
- typedef typename trampoline::const_pointer const_impl_pointer;
-
- impl_color_ref color(){return trampoline::color();}
- ordered_index_color color()const{return trampoline::color();}
- impl_parent_ref parent(){return trampoline::parent();}
- impl_pointer parent()const{return trampoline::parent();}
- impl_pointer& left(){return trampoline::left();}
- impl_pointer left()const{return trampoline::left();}
- impl_pointer& right(){return trampoline::right();}
- impl_pointer right()const{return trampoline::right();}
-
- impl_pointer impl()
- {
- return static_cast<impl_pointer>(
- static_cast<impl_type*>(static_cast<trampoline*>(this)));
- }
-
- const_impl_pointer impl()const
- {
- return static_cast<const_impl_pointer>(
- static_cast<const impl_type*>(static_cast<const trampoline*>(this)));
- }
-
- static ordered_index_node* from_impl(impl_pointer x)
- {
- return static_cast<ordered_index_node*>(
- static_cast<trampoline*>(&*x));
- }
-
- static const ordered_index_node* from_impl(const_impl_pointer x)
- {
- return static_cast<const ordered_index_node*>(
- static_cast<const trampoline*>(&*x));
- }
-
- /* interoperability with bidir_node_iterator */
-
- static void increment(ordered_index_node*& x)
- {
- impl_pointer xi=x->impl();
- trampoline::increment(xi);
- x=from_impl(xi);
- }
-
- static void decrement(ordered_index_node*& x)
- {
- impl_pointer xi=x->impl();
- trampoline::decrement(xi);
- x=from_impl(xi);
- }
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_ops.hpp b/3rdParty/Boost/src/boost/multi_index/detail/ord_index_ops.hpp
deleted file mode 100644
index caa71aa..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/ord_index_ops.hpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- *
- * The internal implementation of red-black trees is based on that of SGI STL
- * stl_tree.h file:
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_OPS_HPP
-#define BOOST_MULTI_INDEX_DETAIL_ORD_INDEX_OPS_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <utility>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Common code for index memfuns having templatized and
- * non-templatized versions.
- */
-
-template<
- typename Node,typename KeyFromValue,
- typename CompatibleKey,typename CompatibleCompare
->
-inline Node* ordered_index_find(
- Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x,
- const CompatibleCompare& comp)
-{
- Node* y0=y;
-
- while (top){
- if(!comp(key(top->value()),x)){
- y=top;
- top=Node::from_impl(top->left());
- }
- else top=Node::from_impl(top->right());
- }
-
- return (y==y0||comp(x,key(y->value())))?y0:y;
-}
-
-template<
- typename Node,typename KeyFromValue,
- typename CompatibleKey,typename CompatibleCompare
->
-inline Node* ordered_index_lower_bound(
- Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x,
- const CompatibleCompare& comp)
-{
- while(top){
- if(!comp(key(top->value()),x)){
- y=top;
- top=Node::from_impl(top->left());
- }
- else top=Node::from_impl(top->right());
- }
-
- return y;
-}
-
-template<
- typename Node,typename KeyFromValue,
- typename CompatibleKey,typename CompatibleCompare
->
-inline Node* ordered_index_upper_bound(
- Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x,
- const CompatibleCompare& comp)
-{
- while(top){
- if(comp(x,key(top->value()))){
- y=top;
- top=Node::from_impl(top->left());
- }
- else top=Node::from_impl(top->right());
- }
-
- return y;
-}
-
-template<
- typename Node,typename KeyFromValue,
- typename CompatibleKey,typename CompatibleCompare
->
-inline std::pair<Node*,Node*> ordered_index_equal_range(
- Node* top,Node* y,const KeyFromValue& key,const CompatibleKey& x,
- const CompatibleCompare& comp)
-{
- while(top){
- if(comp(key(top->value()),x)){
- top=Node::from_impl(top->right());
- }
- else if(comp(x,key(top->value()))){
- y=top;
- top=Node::from_impl(top->left());
- }
- else{
- return std::pair<Node*,Node*>(
- ordered_index_lower_bound(Node::from_impl(top->left()),top,key,x,comp),
- ordered_index_upper_bound(Node::from_impl(top->right()),y,key,x,comp));
- }
- }
-
- return std::pair<Node*,Node*>(y,y);
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/prevent_eti.hpp b/3rdParty/Boost/src/boost/multi_index/detail/prevent_eti.hpp
deleted file mode 100644
index 56c067a..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/prevent_eti.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_PREVENT_ETI_HPP
-#define BOOST_MULTI_INDEX_DETAIL_PREVENT_ETI_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/integral_c.hpp>
-#include <boost/mpl/aux_/msvc_never_true.hpp>
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
-/* See
- * http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_MPL
- * Item 5.6, Beware of the 'early template instantiation' trap.
- */
-
-template<typename Type,typename Construct>
-struct prevent_eti
-{
- typedef typename mpl::if_<
- mpl::aux::msvc_never_true<Type>,
- mpl::integral_c<int,0>,
- Construct
- >::type type;
-};
-#else
-template<typename Type,typename Construct>
-struct prevent_eti
-{
- typedef Construct type;
-};
-#endif
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/safe_ctr_proxy.hpp b/3rdParty/Boost/src/boost/multi_index/detail/safe_ctr_proxy.hpp
deleted file mode 100644
index c733f96..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/safe_ctr_proxy.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_SAFE_CTR_PROXY_HPP
-#define BOOST_MULTI_INDEX_DETAIL_SAFE_CTR_PROXY_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
-#include <boost/multi_index/detail/safe_mode.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* A safe iterator is instantiated in the form
- * safe_iterator<Iterator,Container>: MSVC++ 6.0 has serious troubles with
- * the resulting symbols names, given that index names (which stand for
- * Container) are fairly long themselves. safe_ctr_proxy does not statically
- * depend on Container, and provides the necessary methods (begin and end) to
- * the safe mode framework via an abstract interface. With safe_ctr_proxy,
- * instead of deriving from safe_container<Container> the following base class
- * must be used:
- *
- * safe_ctr_proxy_impl<Iterator,Container>
- *
- * where Iterator is the type of the *unsafe* iterator being wrapped.
- * The corresponding safe iterator instantiation is then
- *
- * safe_iterator<Iterator,safe_ctr_proxy<Iterator> >,
- *
- * which does not include the name of Container.
- */
-
-template<typename Iterator>
-class safe_ctr_proxy:
- public safe_mode::safe_container<safe_ctr_proxy<Iterator> >
-{
-public:
- typedef safe_mode::safe_iterator<Iterator,safe_ctr_proxy> iterator;
- typedef iterator const_iterator;
-
- iterator begin(){return begin_impl();}
- const_iterator begin()const{return begin_impl();}
- iterator end(){return end_impl();}
- const_iterator end()const{return end_impl();}
-
-protected:
- virtual iterator begin_impl()=0;
- virtual const_iterator begin_impl()const=0;
- virtual iterator end_impl()=0;
- virtual const_iterator end_impl()const=0;
-};
-
-template<typename Iterator,typename Container>
-class safe_ctr_proxy_impl:public safe_ctr_proxy<Iterator>
-{
- typedef safe_ctr_proxy<Iterator> super;
- typedef Container container_type;
-
-public:
- typedef typename super::iterator iterator;
- typedef typename super::const_iterator const_iterator;
-
- virtual iterator begin_impl(){return container().begin();}
- virtual const_iterator begin_impl()const{return container().begin();}
- virtual iterator end_impl(){return container().end();}
- virtual const_iterator end_impl()const{return container().end();}
-
-private:
- container_type& container()
- {
- return *static_cast<container_type*>(this);
- }
-
- const container_type& container()const
- {
- return *static_cast<const container_type*>(this);
- }
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif /* workaround */
-
-#endif /* BOOST_MULTI_INDEX_ENABLE_SAFE_MODE */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/safe_mode.hpp b/3rdParty/Boost/src/boost/multi_index/detail/safe_mode.hpp
deleted file mode 100644
index dbfebd8..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/safe_mode.hpp
+++ /dev/null
@@ -1,574 +0,0 @@
-/* Copyright 2003-2009 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_SAFE_MODE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_SAFE_MODE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-/* Safe mode machinery, in the spirit of Cay Hortmann's "Safe STL"
- * (http://www.horstmann.com/safestl.html).
- * In this mode, containers of type Container are derived from
- * safe_container<Container>, and their corresponding iterators
- * are wrapped with safe_iterator. These classes provide
- * an internal record of which iterators are at a given moment associated
- * to a given container, and properly mark the iterators as invalid
- * when the container gets destroyed.
- * Iterators are chained in a single attached list, whose header is
- * kept by the container. More elaborate data structures would yield better
- * performance, but I decided to keep complexity to a minimum since
- * speed is not an issue here.
- * Safe mode iterators automatically check that only proper operations
- * are performed on them: for instance, an invalid iterator cannot be
- * dereferenced. Additionally, a set of utilty macros and functions are
- * provided that serve to implement preconditions and cooperate with
- * the framework within the container.
- * Iterators can also be unchecked, i.e. they do not have info about
- * which container they belong in. This situation arises when the iterator
- * is restored from a serialization archive: only information on the node
- * is available, and it is not possible to determine to which container
- * the iterator is associated to. The only sensible policy is to assume
- * unchecked iterators are valid, though this can certainly generate false
- * positive safe mode checks.
- * This is not a full-fledged safe mode framework, and is only intended
- * for use within the limits of Boost.MultiIndex.
- */
-
-/* Assertion macros. These resolve to no-ops if
- * !defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE).
- */
-
-#if !defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#undef BOOST_MULTI_INDEX_SAFE_MODE_ASSERT
-#define BOOST_MULTI_INDEX_SAFE_MODE_ASSERT(expr,error_code) ((void)0)
-#else
-#if !defined(BOOST_MULTI_INDEX_SAFE_MODE_ASSERT)
-#include <boost/assert.hpp>
-#define BOOST_MULTI_INDEX_SAFE_MODE_ASSERT(expr,error_code) BOOST_ASSERT(expr)
-#endif
-#endif
-
-#define BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_valid_iterator(it), \
- safe_mode::invalid_iterator);
-
-#define BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(it) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_dereferenceable_iterator(it), \
- safe_mode::not_dereferenceable_iterator);
-
-#define BOOST_MULTI_INDEX_CHECK_INCREMENTABLE_ITERATOR(it) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_incrementable_iterator(it), \
- safe_mode::not_incrementable_iterator);
-
-#define BOOST_MULTI_INDEX_CHECK_DECREMENTABLE_ITERATOR(it) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_decrementable_iterator(it), \
- safe_mode::not_decrementable_iterator);
-
-#define BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,cont) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_is_owner(it,cont), \
- safe_mode::not_owner);
-
-#define BOOST_MULTI_INDEX_CHECK_SAME_OWNER(it0,it1) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_same_owner(it0,it1), \
- safe_mode::not_same_owner);
-
-#define BOOST_MULTI_INDEX_CHECK_VALID_RANGE(it0,it1) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_valid_range(it0,it1), \
- safe_mode::invalid_range);
-
-#define BOOST_MULTI_INDEX_CHECK_OUTSIDE_RANGE(it,it0,it1) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_outside_range(it,it0,it1), \
- safe_mode::inside_range);
-
-#define BOOST_MULTI_INDEX_CHECK_IN_BOUNDS(it,n) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_in_bounds(it,n), \
- safe_mode::out_of_bounds);
-
-#define BOOST_MULTI_INDEX_CHECK_DIFFERENT_CONTAINER(cont0,cont1) \
- BOOST_MULTI_INDEX_SAFE_MODE_ASSERT( \
- safe_mode::check_different_container(cont0,cont1), \
- safe_mode::same_container);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/detail/iterator.hpp>
-#include <boost/multi_index/detail/access_specifier.hpp>
-#include <boost/multi_index/detail/iter_adaptor.hpp>
-#include <boost/multi_index/safe_mode_errors.hpp>
-#include <boost/noncopyable.hpp>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-#include <boost/serialization/split_member.hpp>
-#endif
-
-#if defined(BOOST_HAS_THREADS)
-#include <boost/detail/lightweight_mutex.hpp>
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace safe_mode{
-
-/* Checking routines. Assume the best for unchecked iterators
- * (i.e. they pass the checking when there is not enough info
- * to know.)
- */
-
-template<typename Iterator>
-inline bool check_valid_iterator(const Iterator& it)
-{
- return it.valid()||it.unchecked();
-}
-
-template<typename Iterator>
-inline bool check_dereferenceable_iterator(const Iterator& it)
-{
- return it.valid()&&it!=it.owner()->end()||it.unchecked();
-}
-
-template<typename Iterator>
-inline bool check_incrementable_iterator(const Iterator& it)
-{
- return it.valid()&&it!=it.owner()->end()||it.unchecked();
-}
-
-template<typename Iterator>
-inline bool check_decrementable_iterator(const Iterator& it)
-{
- return it.valid()&&it!=it.owner()->begin()||it.unchecked();
-}
-
-template<typename Iterator>
-inline bool check_is_owner(
- const Iterator& it,const typename Iterator::container_type& cont)
-{
- return it.valid()&&it.owner()==&cont||it.unchecked();
-}
-
-template<typename Iterator>
-inline bool check_same_owner(const Iterator& it0,const Iterator& it1)
-{
- return it0.valid()&&it1.valid()&&it0.owner()==it1.owner()||
- it0.unchecked()||it1.unchecked();
-}
-
-template<typename Iterator>
-inline bool check_valid_range(const Iterator& it0,const Iterator& it1)
-{
- if(!check_same_owner(it0,it1))return false;
-
- if(it0.valid()){
- Iterator last=it0.owner()->end();
- if(it1==last)return true;
-
- for(Iterator first=it0;first!=last;++first){
- if(first==it1)return true;
- }
- return false;
- }
- return true;
-}
-
-template<typename Iterator>
-inline bool check_outside_range(
- const Iterator& it,const Iterator& it0,const Iterator& it1)
-{
- if(!check_same_owner(it0,it1))return false;
-
- if(it0.valid()){
- Iterator last=it0.owner()->end();
- bool found=false;
-
- Iterator first=it0;
- for(;first!=last;++first){
- if(first==it1)break;
-
- /* crucial that this check goes after previous break */
-
- if(first==it)found=true;
- }
- if(first!=it1)return false;
- return !found;
- }
- return true;
-}
-
-template<typename Iterator,typename Difference>
-inline bool check_in_bounds(const Iterator& it,Difference n)
-{
- if(it.unchecked())return true;
- if(!it.valid()) return false;
- if(n>0) return it.owner()->end()-it>=n;
- else return it.owner()->begin()-it<=n;
-}
-
-template<typename Container>
-inline bool check_different_container(
- const Container& cont0,const Container& cont1)
-{
- return &cont0!=&cont1;
-}
-
-/* Invalidates all iterators equivalent to that given. Safe containers
- * must call this when deleting elements: the safe mode framework cannot
- * perform this operation automatically without outside help.
- */
-
-template<typename Iterator>
-inline void detach_equivalent_iterators(Iterator& it)
-{
- if(it.valid()){
- {
-#if defined(BOOST_HAS_THREADS)
- boost::detail::lightweight_mutex::scoped_lock lock(it.cont->mutex);
-#endif
-
- Iterator *prev_,*next_;
- for(
- prev_=static_cast<Iterator*>(&it.cont->header);
- (next_=static_cast<Iterator*>(prev_->next))!=0;){
- if(next_!=&it&&*next_==it){
- prev_->next=next_->next;
- next_->cont=0;
- }
- else prev_=next_;
- }
- }
- it.detach();
- }
-}
-
-template<typename Container> class safe_container; /* fwd decl. */
-
-} /* namespace multi_index::safe_mode */
-
-namespace detail{
-
-class safe_container_base; /* fwd decl. */
-
-class safe_iterator_base
-{
-public:
- bool valid()const{return cont!=0;}
- bool unchecked()const{return unchecked_;}
-
- inline void detach();
-
- void uncheck()
- {
- detach();
- unchecked_=true;
- }
-
-protected:
- safe_iterator_base():cont(0),next(0),unchecked_(false){}
-
- explicit safe_iterator_base(safe_container_base* cont_):
- unchecked_(false)
- {
- attach(cont_);
- }
-
- safe_iterator_base(const safe_iterator_base& it):
- unchecked_(it.unchecked_)
- {
- attach(it.cont);
- }
-
- safe_iterator_base& operator=(const safe_iterator_base& it)
- {
- unchecked_=it.unchecked_;
- safe_container_base* new_cont=it.cont;
- if(cont!=new_cont){
- detach();
- attach(new_cont);
- }
- return *this;
- }
-
- ~safe_iterator_base()
- {
- detach();
- }
-
- const safe_container_base* owner()const{return cont;}
-
-BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS:
- friend class safe_container_base;
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
- template<typename> friend class safe_mode::safe_container;
- template<typename Iterator> friend
- void safe_mode::detach_equivalent_iterators(Iterator&);
-#endif
-
- inline void attach(safe_container_base* cont_);
-
- safe_container_base* cont;
- safe_iterator_base* next;
- bool unchecked_;
-};
-
-class safe_container_base:private noncopyable
-{
-public:
- safe_container_base(){}
-
-BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
- friend class safe_iterator_base;
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
- template<typename Iterator> friend
- void safe_mode::detach_equivalent_iterators(Iterator&);
-#endif
-
- ~safe_container_base()
- {
- /* Detaches all remaining iterators, which by now will
- * be those pointing to the end of the container.
- */
-
- for(safe_iterator_base* it=header.next;it;it=it->next)it->cont=0;
- header.next=0;
- }
-
- void swap(safe_container_base& x)
- {
- for(safe_iterator_base* it0=header.next;it0;it0=it0->next)it0->cont=&x;
- for(safe_iterator_base* it1=x.header.next;it1;it1=it1->next)it1->cont=this;
- std::swap(header.cont,x.header.cont);
- std::swap(header.next,x.header.next);
- }
-
- safe_iterator_base header;
-
-#if defined(BOOST_HAS_THREADS)
- boost::detail::lightweight_mutex mutex;
-#endif
-};
-
-void safe_iterator_base::attach(safe_container_base* cont_)
-{
- cont=cont_;
- if(cont){
-#if defined(BOOST_HAS_THREADS)
- boost::detail::lightweight_mutex::scoped_lock lock(cont->mutex);
-#endif
-
- next=cont->header.next;
- cont->header.next=this;
- }
-}
-
-void safe_iterator_base::detach()
-{
- if(cont){
-#if defined(BOOST_HAS_THREADS)
- boost::detail::lightweight_mutex::scoped_lock lock(cont->mutex);
-#endif
-
- safe_iterator_base *prev_,*next_;
- for(prev_=&cont->header;(next_=prev_->next)!=this;prev_=next_){}
- prev_->next=next;
- cont=0;
- }
-}
-
-} /* namespace multi_index::detail */
-
-namespace safe_mode{
-
-/* In order to enable safe mode on a container:
- * - The container must derive from safe_container<container_type>,
- * - iterators must be generated via safe_iterator, which adapts a
- * preexistent unsafe iterator class.
- */
-
-template<typename Container>
-class safe_container;
-
-template<typename Iterator,typename Container>
-class safe_iterator:
- public detail::iter_adaptor<safe_iterator<Iterator,Container>,Iterator>,
- public detail::safe_iterator_base
-{
- typedef detail::iter_adaptor<safe_iterator,Iterator> super;
- typedef detail::safe_iterator_base safe_super;
-
-public:
- typedef Container container_type;
- typedef typename Iterator::reference reference;
- typedef typename Iterator::difference_type difference_type;
-
- safe_iterator(){}
- explicit safe_iterator(safe_container<container_type>* cont_):
- safe_super(cont_){}
- template<typename T0>
- safe_iterator(const T0& t0,safe_container<container_type>* cont_):
- super(Iterator(t0)),safe_super(cont_){}
- template<typename T0,typename T1>
- safe_iterator(
- const T0& t0,const T1& t1,safe_container<container_type>* cont_):
- super(Iterator(t0,t1)),safe_super(cont_){}
-
- safe_iterator& operator=(const safe_iterator& x)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(x);
- this->base_reference()=x.base_reference();
- safe_super::operator=(x);
- return *this;
- }
-
- const container_type* owner()const
- {
- return
- static_cast<const container_type*>(
- static_cast<const safe_container<container_type>*>(
- this->safe_super::owner()));
- }
-
- /* get_node is not to be used by the user */
-
- typedef typename Iterator::node_type node_type;
-
- node_type* get_node()const{return this->base_reference().get_node();}
-
-private:
- friend class boost::multi_index::detail::iter_adaptor_access;
-
- reference dereference()const
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(*this);
- return *(this->base_reference());
- }
-
- bool equal(const safe_iterator& x)const
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(x);
- BOOST_MULTI_INDEX_CHECK_SAME_OWNER(*this,x);
- return this->base_reference()==x.base_reference();
- }
-
- void increment()
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this);
- BOOST_MULTI_INDEX_CHECK_INCREMENTABLE_ITERATOR(*this);
- ++(this->base_reference());
- }
-
- void decrement()
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this);
- BOOST_MULTI_INDEX_CHECK_DECREMENTABLE_ITERATOR(*this);
- --(this->base_reference());
- }
-
- void advance(difference_type n)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this);
- BOOST_MULTI_INDEX_CHECK_IN_BOUNDS(*this,n);
- this->base_reference()+=n;
- }
-
- difference_type distance_to(const safe_iterator& x)const
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(x);
- BOOST_MULTI_INDEX_CHECK_SAME_OWNER(*this,x);
- return x.base_reference()-this->base_reference();
- }
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- /* Serialization. Note that Iterator::save and Iterator:load
- * are assumed to be defined and public: at first sight it seems
- * like we could have resorted to the public serialization interface
- * for doing the forwarding to the adapted iterator class:
- * ar<<base_reference();
- * ar>>base_reference();
- * but this would cause incompatibilities if a saving
- * program is in safe mode and the loading program is not, or
- * viceversa --in safe mode, the archived iterator data is one layer
- * deeper, this is especially relevant with XML archives.
- * It'd be nice if Boost.Serialization provided some forwarding
- * facility for use by adaptor classes.
- */
-
- friend class boost::serialization::access;
-
- BOOST_SERIALIZATION_SPLIT_MEMBER()
-
- template<class Archive>
- void save(Archive& ar,const unsigned int version)const
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(*this);
- this->base_reference().save(ar,version);
- }
-
- template<class Archive>
- void load(Archive& ar,const unsigned int version)
- {
- this->base_reference().load(ar,version);
- safe_super::uncheck();
- }
-#endif
-};
-
-template<typename Container>
-class safe_container:public detail::safe_container_base
-{
- typedef detail::safe_container_base super;
-
-public:
- void detach_dereferenceable_iterators()
- {
- typedef typename Container::iterator iterator;
-
- iterator end_=static_cast<Container*>(this)->end();
- iterator *prev_,*next_;
- for(
- prev_=static_cast<iterator*>(&this->header);
- (next_=static_cast<iterator*>(prev_->next))!=0;){
- if(*next_!=end_){
- prev_->next=next_->next;
- next_->cont=0;
- }
- else prev_=next_;
- }
- }
-
- void swap(safe_container<Container>& x)
- {
- super::swap(x);
- }
-};
-
-} /* namespace multi_index::safe_mode */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif /* BOOST_MULTI_INDEX_ENABLE_SAFE_MODE */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/scope_guard.hpp b/3rdParty/Boost/src/boost/multi_index/detail/scope_guard.hpp
deleted file mode 100644
index 12624c5..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/scope_guard.hpp
+++ /dev/null
@@ -1,277 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_SCOPE_GUARD_HPP
-#define BOOST_MULTI_INDEX_DETAIL_SCOPE_GUARD_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Until some official version of the ScopeGuard idiom makes it into Boost,
- * we locally define our own. This is a merely reformated version of
- * ScopeGuard.h as defined in:
- * Alexandrescu, A., Marginean, P.:"Generic<Programming>: Change the Way You
- * Write Exception-Safe Code - Forever", C/C++ Users Jornal, Dec 2000,
- * http://www.cuj.com/documents/s=8000/cujcexp1812alexandr/
- * with the following modifications:
- * - General pretty formatting (pretty to my taste at least.)
- * - Naming style changed to standard C++ library requirements.
- * - safe_execute does not feature a try-catch protection, so we can
- * use this even if BOOST_NO_EXCEPTIONS is defined.
- * - Added scope_guard_impl4 and obj_scope_guard_impl3, (Boost.MultiIndex
- * needs them). A better design would provide guards for many more
- * arguments through the Boost Preprocessor Library.
- * - Added scope_guard_impl_base::touch (see below.)
- * - Removed RefHolder and ByRef, whose functionality is provided
- * already by Boost.Ref.
- * - Removed static make_guard's and make_obj_guard's, so that the code
- * will work even if BOOST_NO_MEMBER_TEMPLATES is defined. This forces
- * us to move some private ctors to public, though.
- *
- * NB: CodeWarrior Pro 8 seems to have problems looking up safe_execute
- * without an explicit qualification.
- */
-
-class scope_guard_impl_base
-{
-public:
- scope_guard_impl_base():dismissed_(false){}
- void dismiss()const{dismissed_=true;}
-
- /* This helps prevent some "unused variable" warnings under, for instance,
- * GCC 3.2.
- */
- void touch()const{}
-
-protected:
- ~scope_guard_impl_base(){}
-
- scope_guard_impl_base(const scope_guard_impl_base& other):
- dismissed_(other.dismissed_)
- {
- other.dismiss();
- }
-
- template<typename J>
- static void safe_execute(J& j){if(!j.dismissed_)j.execute();}
-
- mutable bool dismissed_;
-
-private:
- scope_guard_impl_base& operator=(const scope_guard_impl_base&);
-};
-
-typedef const scope_guard_impl_base& scope_guard;
-
-template<typename F>
-class scope_guard_impl0:public scope_guard_impl_base
-{
-public:
- scope_guard_impl0(F fun):fun_(fun){}
- ~scope_guard_impl0(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){fun_();}
-
-protected:
-
- F fun_;
-};
-
-template<typename F>
-inline scope_guard_impl0<F> make_guard(F fun)
-{
- return scope_guard_impl0<F>(fun);
-}
-
-template<typename F,typename P1>
-class scope_guard_impl1:public scope_guard_impl_base
-{
-public:
- scope_guard_impl1(F fun,P1 p1):fun_(fun),p1_(p1){}
- ~scope_guard_impl1(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){fun_(p1_);}
-
-protected:
- F fun_;
- const P1 p1_;
-};
-
-template<typename F,typename P1>
-inline scope_guard_impl1<F,P1> make_guard(F fun,P1 p1)
-{
- return scope_guard_impl1<F,P1>(fun,p1);
-}
-
-template<typename F,typename P1,typename P2>
-class scope_guard_impl2:public scope_guard_impl_base
-{
-public:
- scope_guard_impl2(F fun,P1 p1,P2 p2):fun_(fun),p1_(p1),p2_(p2){}
- ~scope_guard_impl2(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){fun_(p1_,p2_);}
-
-protected:
- F fun_;
- const P1 p1_;
- const P2 p2_;
-};
-
-template<typename F,typename P1,typename P2>
-inline scope_guard_impl2<F,P1,P2> make_guard(F fun,P1 p1,P2 p2)
-{
- return scope_guard_impl2<F,P1,P2>(fun,p1,p2);
-}
-
-template<typename F,typename P1,typename P2,typename P3>
-class scope_guard_impl3:public scope_guard_impl_base
-{
-public:
- scope_guard_impl3(F fun,P1 p1,P2 p2,P3 p3):fun_(fun),p1_(p1),p2_(p2),p3_(p3){}
- ~scope_guard_impl3(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){fun_(p1_,p2_,p3_);}
-
-protected:
- F fun_;
- const P1 p1_;
- const P2 p2_;
- const P3 p3_;
-};
-
-template<typename F,typename P1,typename P2,typename P3>
-inline scope_guard_impl3<F,P1,P2,P3> make_guard(F fun,P1 p1,P2 p2,P3 p3)
-{
- return scope_guard_impl3<F,P1,P2,P3>(fun,p1,p2,p3);
-}
-
-template<typename F,typename P1,typename P2,typename P3,typename P4>
-class scope_guard_impl4:public scope_guard_impl_base
-{
-public:
- scope_guard_impl4(F fun,P1 p1,P2 p2,P3 p3,P4 p4):
- fun_(fun),p1_(p1),p2_(p2),p3_(p3),p4_(p4){}
- ~scope_guard_impl4(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){fun_(p1_,p2_,p3_,p4_);}
-
-protected:
- F fun_;
- const P1 p1_;
- const P2 p2_;
- const P3 p3_;
- const P4 p4_;
-};
-
-template<typename F,typename P1,typename P2,typename P3,typename P4>
-inline scope_guard_impl4<F,P1,P2,P3,P4> make_guard(
- F fun,P1 p1,P2 p2,P3 p3,P4 p4)
-{
- return scope_guard_impl4<F,P1,P2,P3,P4>(fun,p1,p2,p3,p4);
-}
-
-template<class Obj,typename MemFun>
-class obj_scope_guard_impl0:public scope_guard_impl_base
-{
-public:
- obj_scope_guard_impl0(Obj& obj,MemFun mem_fun):obj_(obj),mem_fun_(mem_fun){}
- ~obj_scope_guard_impl0(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){(obj_.*mem_fun_)();}
-
-protected:
- Obj& obj_;
- MemFun mem_fun_;
-};
-
-template<class Obj,typename MemFun>
-inline obj_scope_guard_impl0<Obj,MemFun> make_obj_guard(Obj& obj,MemFun mem_fun)
-{
- return obj_scope_guard_impl0<Obj,MemFun>(obj,mem_fun);
-}
-
-template<class Obj,typename MemFun,typename P1>
-class obj_scope_guard_impl1:public scope_guard_impl_base
-{
-public:
- obj_scope_guard_impl1(Obj& obj,MemFun mem_fun,P1 p1):
- obj_(obj),mem_fun_(mem_fun),p1_(p1){}
- ~obj_scope_guard_impl1(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){(obj_.*mem_fun_)(p1_);}
-
-protected:
- Obj& obj_;
- MemFun mem_fun_;
- const P1 p1_;
-};
-
-template<class Obj,typename MemFun,typename P1>
-inline obj_scope_guard_impl1<Obj,MemFun,P1> make_obj_guard(
- Obj& obj,MemFun mem_fun,P1 p1)
-{
- return obj_scope_guard_impl1<Obj,MemFun,P1>(obj,mem_fun,p1);
-}
-
-template<class Obj,typename MemFun,typename P1,typename P2>
-class obj_scope_guard_impl2:public scope_guard_impl_base
-{
-public:
- obj_scope_guard_impl2(Obj& obj,MemFun mem_fun,P1 p1,P2 p2):
- obj_(obj),mem_fun_(mem_fun),p1_(p1),p2_(p2)
- {}
- ~obj_scope_guard_impl2(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){(obj_.*mem_fun_)(p1_,p2_);}
-
-protected:
- Obj& obj_;
- MemFun mem_fun_;
- const P1 p1_;
- const P2 p2_;
-};
-
-template<class Obj,typename MemFun,typename P1,typename P2>
-inline obj_scope_guard_impl2<Obj,MemFun,P1,P2>
-make_obj_guard(Obj& obj,MemFun mem_fun,P1 p1,P2 p2)
-{
- return obj_scope_guard_impl2<Obj,MemFun,P1,P2>(obj,mem_fun,p1,p2);
-}
-
-template<class Obj,typename MemFun,typename P1,typename P2,typename P3>
-class obj_scope_guard_impl3:public scope_guard_impl_base
-{
-public:
- obj_scope_guard_impl3(Obj& obj,MemFun mem_fun,P1 p1,P2 p2,P3 p3):
- obj_(obj),mem_fun_(mem_fun),p1_(p1),p2_(p2),p3_(p3)
- {}
- ~obj_scope_guard_impl3(){scope_guard_impl_base::safe_execute(*this);}
- void execute(){(obj_.*mem_fun_)(p1_,p2_,p3_);}
-
-protected:
- Obj& obj_;
- MemFun mem_fun_;
- const P1 p1_;
- const P2 p2_;
- const P3 p3_;
-};
-
-template<class Obj,typename MemFun,typename P1,typename P2,typename P3>
-inline obj_scope_guard_impl3<Obj,MemFun,P1,P2,P3>
-make_obj_guard(Obj& obj,MemFun mem_fun,P1 p1,P2 p2,P3 p3)
-{
- return obj_scope_guard_impl3<Obj,MemFun,P1,P2,P3>(obj,mem_fun,p1,p2,p3);
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_node.hpp b/3rdParty/Boost/src/boost/multi_index/detail/seq_index_node.hpp
deleted file mode 100644
index cf409ed..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_node.hpp
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_NODE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_NODE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/detail/allocator_utilities.hpp>
-#include <boost/multi_index/detail/prevent_eti.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* doubly-linked node for use by sequenced_index */
-
-template<typename Allocator>
-struct sequenced_index_node_impl
-{
- typedef typename prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,sequenced_index_node_impl
- >::type
- >::type::pointer pointer;
- typedef typename prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,sequenced_index_node_impl
- >::type
- >::type::const_pointer const_pointer;
-
- pointer& prior(){return prior_;}
- pointer prior()const{return prior_;}
- pointer& next(){return next_;}
- pointer next()const{return next_;}
-
- /* interoperability with bidir_node_iterator */
-
- static void increment(pointer& x){x=x->next();}
- static void decrement(pointer& x){x=x->prior();}
-
- /* algorithmic stuff */
-
- static void link(pointer x,pointer header)
- {
- x->prior()=header->prior();
- x->next()=header;
- x->prior()->next()=x->next()->prior()=x;
- };
-
- static void unlink(pointer x)
- {
- x->prior()->next()=x->next();
- x->next()->prior()=x->prior();
- }
-
- static void relink(pointer position,pointer x)
- {
- unlink(x);
- x->prior()=position->prior();
- x->next()=position;
- x->prior()->next()=x->next()->prior()=x;
- }
-
- static void relink(pointer position,pointer x,pointer y)
- {
- /* position is assumed not to be in [x,y) */
-
- if(x!=y){
- pointer z=y->prior();
- x->prior()->next()=y;
- y->prior()=x->prior();
- x->prior()=position->prior();
- z->next()=position;
- x->prior()->next()=x;
- z->next()->prior()=z;
- }
- }
-
- static void reverse(pointer header)
- {
- pointer x=header;
- do{
- pointer y=x->next();
- std::swap(x->prior(),x->next());
- x=y;
- }while(x!=header);
- }
-
- static void swap(pointer x,pointer y)
- {
- /* This swap function does not exchange the header nodes,
- * but rather their pointers. This is *not* used for implementing
- * sequenced_index::swap.
- */
-
- if(x->next()!=x){
- if(y->next()!=y){
- std::swap(x->next(),y->next());
- std::swap(x->prior(),y->prior());
- x->next()->prior()=x->prior()->next()=x;
- y->next()->prior()=y->prior()->next()=y;
- }
- else{
- y->next()=x->next();
- y->prior()=x->prior();
- x->next()=x->prior()=x;
- y->next()->prior()=y->prior()->next()=y;
- }
- }
- else if(y->next()!=y){
- x->next()=y->next();
- x->prior()=y->prior();
- y->next()=y->prior()=y;
- x->next()->prior()=x->prior()->next()=x;
- }
- }
-
-private:
- pointer prior_;
- pointer next_;
-};
-
-template<typename Super>
-struct sequenced_index_node_trampoline:
- prevent_eti<
- Super,
- sequenced_index_node_impl<
- typename boost::detail::allocator::rebind_to<
- typename Super::allocator_type,
- char
- >::type
- >
- >::type
-{
- typedef typename prevent_eti<
- Super,
- sequenced_index_node_impl<
- typename boost::detail::allocator::rebind_to<
- typename Super::allocator_type,
- char
- >::type
- >
- >::type impl_type;
-};
-
-template<typename Super>
-struct sequenced_index_node:Super,sequenced_index_node_trampoline<Super>
-{
-private:
- typedef sequenced_index_node_trampoline<Super> trampoline;
-
-public:
- typedef typename trampoline::impl_type impl_type;
- typedef typename trampoline::pointer impl_pointer;
- typedef typename trampoline::const_pointer const_impl_pointer;
-
- impl_pointer& prior(){return trampoline::prior();}
- impl_pointer prior()const{return trampoline::prior();}
- impl_pointer& next(){return trampoline::next();}
- impl_pointer next()const{return trampoline::next();}
-
- impl_pointer impl()
- {
- return static_cast<impl_pointer>(
- static_cast<impl_type*>(static_cast<trampoline*>(this)));
- }
-
- const_impl_pointer impl()const
- {
- return static_cast<const_impl_pointer>(
- static_cast<const impl_type*>(static_cast<const trampoline*>(this)));
- }
-
- static sequenced_index_node* from_impl(impl_pointer x)
- {
- return static_cast<sequenced_index_node*>(
- static_cast<trampoline*>(&*x));
- }
-
- static const sequenced_index_node* from_impl(const_impl_pointer x)
- {
- return static_cast<const sequenced_index_node*>(
- static_cast<const trampoline*>(&*x));
- }
-
- /* interoperability with bidir_node_iterator */
-
- static void increment(sequenced_index_node*& x)
- {
- impl_pointer xi=x->impl();
- trampoline::increment(xi);
- x=from_impl(xi);
- }
-
- static void decrement(sequenced_index_node*& x)
- {
- impl_pointer xi=x->impl();
- trampoline::decrement(xi);
- x=from_impl(xi);
- }
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_ops.hpp b/3rdParty/Boost/src/boost/multi_index/detail/seq_index_ops.hpp
deleted file mode 100644
index 8135074..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/seq_index_ops.hpp
+++ /dev/null
@@ -1,200 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_OPS_HPP
-#define BOOST_MULTI_INDEX_DETAIL_SEQ_INDEX_OPS_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/no_exceptions_support.hpp>
-#include <boost/multi_index/detail/seq_index_node.hpp>
-#include <boost/limits.hpp>
-#include <boost/type_traits/aligned_storage.hpp>
-#include <boost/type_traits/alignment_of.hpp>
-#include <cstddef>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Common code for sequenced_index memfuns having templatized and
- * non-templatized versions.
- */
-
-template <typename SequencedIndex,typename Predicate>
-void sequenced_index_remove(SequencedIndex& x,Predicate pred)
-{
- typedef typename SequencedIndex::iterator iterator;
- iterator first=x.begin(),last=x.end();
- while(first!=last){
- if(pred(*first))x.erase(first++);
- else ++first;
- }
-}
-
-template <typename SequencedIndex,class BinaryPredicate>
-void sequenced_index_unique(SequencedIndex& x,BinaryPredicate binary_pred)
-{
- typedef typename SequencedIndex::iterator iterator;
- iterator first=x.begin();
- iterator last=x.end();
- if(first!=last){
- for(iterator middle=first;++middle!=last;middle=first){
- if(binary_pred(*middle,*first))x.erase(middle);
- else first=middle;
- }
- }
-}
-
-template <typename SequencedIndex,typename Compare>
-void sequenced_index_merge(SequencedIndex& x,SequencedIndex& y,Compare comp)
-{
- typedef typename SequencedIndex::iterator iterator;
- if(&x!=&y){
- iterator first0=x.begin(),last0=x.end();
- iterator first1=y.begin(),last1=y.end();
- while(first0!=last0&&first1!=last1){
- if(comp(*first1,*first0))x.splice(first0,y,first1++);
- else ++first0;
- }
- x.splice(last0,y,first1,last1);
- }
-}
-
-/* sorting */
-
-/* auxiliary stuff */
-
-template<typename Node,typename Compare>
-void sequenced_index_collate(
- BOOST_DEDUCED_TYPENAME Node::impl_type* x,
- BOOST_DEDUCED_TYPENAME Node::impl_type* y,
- Compare comp
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Node))
-{
- typedef typename Node::impl_type impl_type;
- typedef typename Node::impl_pointer impl_pointer;
-
- impl_pointer first0=x->next();
- impl_pointer last0=x;
- impl_pointer first1=y->next();
- impl_pointer last1=y;
- while(first0!=last0&&first1!=last1){
- if(comp(
- Node::from_impl(first1)->value(),Node::from_impl(first0)->value())){
- impl_pointer tmp=first1->next();
- impl_type::relink(first0,first1);
- first1=tmp;
- }
- else first0=first0->next();
- }
- impl_type::relink(last0,first1,last1);
-}
-
-/* Some versions of CGG require a bogus typename in counter_spc
- * inside sequenced_index_sort if the following is defined
- * also inside sequenced_index_sort.
- */
-
-BOOST_STATIC_CONSTANT(
- std::size_t,
- sequenced_index_sort_max_fill=
- (std::size_t)std::numeric_limits<std::size_t>::digits+1);
-
-template<typename Node,typename Compare>
-void sequenced_index_sort(Node* header,Compare comp)
-{
- /* Musser's mergesort, see http://www.cs.rpi.edu/~musser/gp/List/lists1.html.
- * The implementation is a little convoluted: in the original code
- * counter elements and carry are std::lists: here we do not want
- * to use multi_index instead, so we do things at a lower level, managing
- * directly the internal node representation.
- * Incidentally, the implementations I've seen of this algorithm (SGI,
- * Dinkumware, STLPort) are not exception-safe: this is. Moreover, we do not
- * use any dynamic storage.
- */
-
- if(header->next()==header->impl()||
- header->next()->next()==header->impl())return;
-
- typedef typename Node::impl_type impl_type;
- typedef typename Node::impl_pointer impl_pointer;
-
- typedef typename aligned_storage<
- sizeof(impl_type),
- alignment_of<impl_type>::value
- >::type carry_spc_type;
- carry_spc_type carry_spc;
- impl_type& carry=
- *static_cast<impl_type*>(static_cast<void*>(&carry_spc));
- typedef typename aligned_storage<
- sizeof(
- impl_type
- [sequenced_index_sort_max_fill]),
- alignment_of<
- impl_type
- [sequenced_index_sort_max_fill]
- >::value
- >::type counter_spc_type;
- counter_spc_type counter_spc;
- impl_type* counter=
- static_cast<impl_type*>(static_cast<void*>(&counter_spc));
- std::size_t fill=0;
-
- carry.prior()=carry.next()=static_cast<impl_pointer>(&carry);
- counter[0].prior()=counter[0].next()=static_cast<impl_pointer>(&counter[0]);
-
- BOOST_TRY{
- while(header->next()!=header->impl()){
- impl_type::relink(carry.next(),header->next());
- std::size_t i=0;
- while(i<fill&&counter[i].next()!=static_cast<impl_pointer>(&counter[i])){
- sequenced_index_collate<Node>(&carry,&counter[i++],comp);
- }
- impl_type::swap(
- static_cast<impl_pointer>(&carry),
- static_cast<impl_pointer>(&counter[i]));
- if(i==fill){
- ++fill;
- counter[fill].prior()=counter[fill].next()=
- static_cast<impl_pointer>(&counter[fill]);
- }
- }
-
- for(std::size_t i=1;i<fill;++i){
- sequenced_index_collate<Node>(&counter[i],&counter[i-1],comp);
- }
- impl_type::swap(
- header->impl(),static_cast<impl_pointer>(&counter[fill-1]));
- }
- BOOST_CATCH(...)
- {
- impl_type::relink(
- header->impl(),carry.next(),static_cast<impl_pointer>(&carry));
- for(std::size_t i=0;i<=fill;++i){
- impl_type::relink(
- header->impl(),counter[i].next(),
- static_cast<impl_pointer>(&counter[i]));
- }
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
-}
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/serialization_version.hpp b/3rdParty/Boost/src/boost/multi_index/detail/serialization_version.hpp
deleted file mode 100644
index cced78c..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/serialization_version.hpp
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Copyright 2003-2010 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_SERIALIZATION_VERSION_HPP
-#define BOOST_MULTI_INDEX_DETAIL_SERIALIZATION_VERSION_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/serialization/split_member.hpp>
-#include <boost/serialization/version.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* Helper class for storing and retrieving a given type serialization class
- * version while avoiding saving the number multiple times in the same
- * archive.
- * Behavior undefined if template partial specialization is not supported.
- */
-
-template<typename T>
-struct serialization_version
-{
- serialization_version():
- value(boost::serialization::version<serialization_version>::value){}
-
- serialization_version& operator=(unsigned int x){value=x;return *this;};
-
- operator unsigned int()const{return value;}
-
-private:
- friend class boost::serialization::access;
-
- BOOST_SERIALIZATION_SPLIT_MEMBER()
-
- template<class Archive>
- void save(Archive&,const unsigned int)const{}
-
- template<class Archive>
- void load(Archive&,const unsigned int version)
- {
- this->value=version;
- }
-
- unsigned int value;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-namespace serialization {
-template<typename T>
-struct version<boost::multi_index::detail::serialization_version<T> >
-{
- BOOST_STATIC_CONSTANT(int,value=version<T>::value);
-};
-} /* namespace serialization */
-#endif
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/uintptr_type.hpp b/3rdParty/Boost/src/boost/multi_index/detail/uintptr_type.hpp
deleted file mode 100644
index 529c623..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/uintptr_type.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_UINTPTR_TYPE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_UINTPTR_TYPE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/bool.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* has_uintptr_type is an MPL integral constant determining whether
- * there exists an unsigned integral type with the same size as
- * void *.
- * uintptr_type is such a type if has_uintptr is true, or unsigned int
- * otherwise.
- * Note that uintptr_type is more restrictive than C99 uintptr_t,
- * where an integral type with size greater than that of void *
- * would be conformant.
- */
-
-template<int N>struct uintptr_candidates;
-template<>struct uintptr_candidates<-1>{typedef unsigned int type;};
-template<>struct uintptr_candidates<0> {typedef unsigned int type;};
-template<>struct uintptr_candidates<1> {typedef unsigned short type;};
-template<>struct uintptr_candidates<2> {typedef unsigned long type;};
-
-#if defined(BOOST_HAS_LONG_LONG)
-template<>struct uintptr_candidates<3> {typedef boost::ulong_long_type type;};
-#else
-template<>struct uintptr_candidates<3> {typedef unsigned int type;};
-#endif
-
-#if defined(BOOST_HAS_MS_INT64)
-template<>struct uintptr_candidates<4> {typedef unsigned __int64 type;};
-#else
-template<>struct uintptr_candidates<4> {typedef unsigned int type;};
-#endif
-
-struct uintptr_aux
-{
- BOOST_STATIC_CONSTANT(int,index=
- sizeof(void*)==sizeof(uintptr_candidates<0>::type)?0:
- sizeof(void*)==sizeof(uintptr_candidates<1>::type)?1:
- sizeof(void*)==sizeof(uintptr_candidates<2>::type)?2:
- sizeof(void*)==sizeof(uintptr_candidates<3>::type)?3:
- sizeof(void*)==sizeof(uintptr_candidates<4>::type)?4:-1);
-
- BOOST_STATIC_CONSTANT(bool,has_uintptr_type=(index>=0));
-
- typedef uintptr_candidates<index>::type type;
-};
-
-typedef mpl::bool_<uintptr_aux::has_uintptr_type> has_uintptr_type;
-typedef uintptr_aux::type uintptr_type;
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/unbounded.hpp b/3rdParty/Boost/src/boost/multi_index/detail/unbounded.hpp
deleted file mode 100644
index 40c3034..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/unbounded.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_UNBOUNDED_HPP
-#define BOOST_MULTI_INDEX_DETAIL_UNBOUNDED_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/detail/workaround.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-/* dummy type and variable for use in ordered_index::range() */
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
-/* The default branch actually works for MSVC 6.0, but seems like
- * this implementation of unbounded improves the performance of ordered
- * indices! This behavior is hard to explain and probably a test artifact,
- * but it does not hurt to have the workaround anyway.
- */
-
-namespace detail{struct unbounded_type{};}
-
-namespace{
-
-static detail::unbounded_type unbounded_obj=detail::unbounded_type();
-static detail::unbounded_type& unbounded=unbounded_obj;
-
-} /* unnamed */
-#else
-/* ODR-abiding technique shown at the example attached to
- * http://lists.boost.org/Archives/boost/2006/07/108355.php
- */
-
-namespace detail{class unbounded_helper;}
-
-detail::unbounded_helper unbounded(detail::unbounded_helper);
-
-namespace detail{
-
-class unbounded_helper
-{
- unbounded_helper(){}
- unbounded_helper(const unbounded_helper&){}
- friend unbounded_helper multi_index::unbounded(unbounded_helper);
-};
-
-typedef unbounded_helper (*unbounded_type)(unbounded_helper);
-
-} /* namespace multi_index::detail */
-
-inline detail::unbounded_helper unbounded(detail::unbounded_helper)
-{
- return detail::unbounded_helper();
-}
-#endif
-
-/* tags used in the implementation of range */
-
-namespace detail{
-
-struct none_unbounded_tag{};
-struct lower_unbounded_tag{};
-struct upper_unbounded_tag{};
-struct both_unbounded_tag{};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/detail/value_compare.hpp b/3rdParty/Boost/src/boost/multi_index/detail/value_compare.hpp
deleted file mode 100644
index 0bd7b4f..0000000
--- a/3rdParty/Boost/src/boost/multi_index/detail/value_compare.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_DETAIL_VALUE_COMPARE_HPP
-#define BOOST_MULTI_INDEX_DETAIL_VALUE_COMPARE_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/call_traits.hpp>
-#include <functional>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-template<typename Value,typename KeyFromValue,typename Compare>
-struct value_comparison:std::binary_function<Value,Value,bool>
-{
- value_comparison(
- const KeyFromValue& key_=KeyFromValue(),const Compare& comp_=Compare()):
- key(key_),comp(comp_)
- {
- }
-
- bool operator()(
- typename call_traits<Value>::param_type x,
- typename call_traits<Value>::param_type y)const
- {
- return comp(key(x),key(y));
- }
-
-private:
- KeyFromValue key;
- Compare comp;
-};
-
-} /* namespace multi_index::detail */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/identity.hpp b/3rdParty/Boost/src/boost/multi_index/identity.hpp
deleted file mode 100644
index b402ad7..0000000
--- a/3rdParty/Boost/src/boost/multi_index/identity.hpp
+++ /dev/null
@@ -1,147 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_IDENTITY_HPP
-#define BOOST_MULTI_INDEX_IDENTITY_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/multi_index/identity_fwd.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/remove_const.hpp>
-#include <boost/utility/enable_if.hpp>
-
-#if !defined(BOOST_NO_SFINAE)
-#include <boost/type_traits/is_convertible.hpp>
-#endif
-
-namespace boost{
-
-template<class Type> class reference_wrapper; /* fwd decl. */
-
-namespace multi_index{
-
-namespace detail{
-
-/* identity is a do-nothing key extractor that returns the [const] Type&
- * object passed.
- * Additionally, identity is overloaded to support referece_wrappers
- * of Type and "chained pointers" to Type's. By chained pointer to Type we
- * mean a type P such that, given a p of type P
- * *...n...*x is convertible to Type&, for some n>=1.
- * Examples of chained pointers are raw and smart pointers, iterators and
- * arbitrary combinations of these (vg. Type** or auto_ptr<Type*>.)
- */
-
-/* NB. Some overloads of operator() have an extra dummy parameter int=0.
- * This disambiguator serves several purposes:
- * - Without it, MSVC++ 6.0 incorrectly regards some overloads as
- * specializations of a previous member function template.
- * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns
- * as if they have the same signature.
- * - If remove_const is broken due to lack of PTS, int=0 avoids the
- * declaration of memfuns with identical signature.
- */
-
-template<typename Type>
-struct const_identity_base
-{
- typedef Type result_type;
-
- template<typename ChainedPtr>
-
-#if !defined(BOOST_NO_SFINAE)
- typename disable_if<is_convertible<const ChainedPtr&,Type&>,Type&>::type
-#else
- Type&
-#endif
-
- operator()(const ChainedPtr& x)const
- {
- return operator()(*x);
- }
-
- Type& operator()(Type& x)const
- {
- return x;
- }
-
- Type& operator()(const reference_wrapper<Type>& x)const
- {
- return x.get();
- }
-
- Type& operator()(
- const reference_wrapper<typename remove_const<Type>::type>& x,int=0)const
- {
- return x.get();
- }
-};
-
-template<typename Type>
-struct non_const_identity_base
-{
- typedef Type result_type;
-
- /* templatized for pointer-like types */
-
- template<typename ChainedPtr>
-
-#if !defined(BOOST_NO_SFINAE)
- typename disable_if<
- is_convertible<const ChainedPtr&,const Type&>,Type&>::type
-#else
- Type&
-#endif
-
- operator()(const ChainedPtr& x)const
- {
- return operator()(*x);
- }
-
- const Type& operator()(const Type& x,int=0)const
- {
- return x;
- }
-
- Type& operator()(Type& x)const
- {
- return x;
- }
-
- const Type& operator()(const reference_wrapper<const Type>& x,int=0)const
- {
- return x.get();
- }
-
- Type& operator()(const reference_wrapper<Type>& x)const
- {
- return x.get();
- }
-};
-
-} /* namespace multi_index::detail */
-
-template<class Type>
-struct identity:
- mpl::if_c<
- is_const<Type>::value,
- detail::const_identity_base<Type>,detail::non_const_identity_base<Type>
- >::type
-{
-};
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/identity_fwd.hpp b/3rdParty/Boost/src/boost/multi_index/identity_fwd.hpp
deleted file mode 100644
index baafa43..0000000
--- a/3rdParty/Boost/src/boost/multi_index/identity_fwd.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_IDENTITY_FWD_HPP
-#define BOOST_MULTI_INDEX_IDENTITY_FWD_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-template<class Type> struct identity;
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/indexed_by.hpp b/3rdParty/Boost/src/boost/multi_index/indexed_by.hpp
deleted file mode 100644
index 94a8dcb..0000000
--- a/3rdParty/Boost/src/boost/multi_index/indexed_by.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_INDEXED_BY_HPP
-#define BOOST_MULTI_INDEX_INDEXED_BY_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/vector.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/control/expr_if.hpp>
-#include <boost/preprocessor/repetition/enum.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-
-/* An alias to mpl::vector used to hide MPL from the user.
- * indexed_by contains the index specifiers for instantiation
- * of a multi_index_container.
- */
-
-/* This user_definable macro limits the number of elements of an index list;
- * useful for shortening resulting symbol names (MSVC++ 6.0, for instance,
- * has problems coping with very long symbol names.)
- */
-
-#if !defined(BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE)
-#if defined(BOOST_MSVC)&&(BOOST_MSVC<1300)
-#define BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE 5
-#else
-#define BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
-#endif
-#endif
-
-#if BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE<BOOST_MPL_LIMIT_VECTOR_SIZE
-#define BOOST_MULTI_INDEX_INDEXED_BY_SIZE \
- BOOST_MULTI_INDEX_LIMIT_INDEXED_BY_SIZE
-#else
-#define BOOST_MULTI_INDEX_INDEXED_BY_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
-#endif
-
-#define BOOST_MULTI_INDEX_INDEXED_BY_TEMPLATE_PARM(z,n,var) \
- typename BOOST_PP_CAT(var,n) BOOST_PP_EXPR_IF(n,=mpl::na)
-
-namespace boost{
-
-namespace multi_index{
-
-template<
- BOOST_PP_ENUM(
- BOOST_MULTI_INDEX_INDEXED_BY_SIZE,
- BOOST_MULTI_INDEX_INDEXED_BY_TEMPLATE_PARM,T)
->
-struct indexed_by:
- mpl::vector<BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_INDEXED_BY_SIZE,T)>
-{
-};
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#undef BOOST_MULTI_INDEX_INDEXED_BY_TEMPLATE_PARM
-#undef BOOST_MULTI_INDEX_INDEXED_BY_SIZE
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/member.hpp b/3rdParty/Boost/src/boost/multi_index/member.hpp
deleted file mode 100644
index 848e9b2..0000000
--- a/3rdParty/Boost/src/boost/multi_index/member.hpp
+++ /dev/null
@@ -1,269 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_MEMBER_HPP
-#define BOOST_MULTI_INDEX_MEMBER_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/mpl/if.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <cstddef>
-
-#if !defined(BOOST_NO_SFINAE)
-#include <boost/type_traits/is_convertible.hpp>
-#endif
-
-namespace boost{
-
-template<class T> class reference_wrapper; /* fwd decl. */
-
-namespace multi_index{
-
-namespace detail{
-
-/* member is a read/write key extractor for accessing a given
- * member of a class.
- * Additionally, member is overloaded to support referece_wrappers
- * of T and "chained pointers" to T's. By chained pointer to T we mean
- * a type P such that, given a p of Type P
- * *...n...*x is convertible to T&, for some n>=1.
- * Examples of chained pointers are raw and smart pointers, iterators and
- * arbitrary combinations of these (vg. T** or auto_ptr<T*>.)
- */
-
-/* NB. Some overloads of operator() have an extra dummy parameter int=0.
- * This disambiguator serves several purposes:
- * - Without it, MSVC++ 6.0 incorrectly regards some overloads as
- * specializations of a previous member function template.
- * - MSVC++ 6.0/7.0 seem to incorrectly treat some different memfuns
- * as if they have the same signature.
- * - If remove_const is broken due to lack of PTS, int=0 avoids the
- * declaration of memfuns with identical signature.
- */
-
-template<class Class,typename Type,Type Class::*PtrToMember>
-struct const_member_base
-{
- typedef Type result_type;
-
- template<typename ChainedPtr>
-
-#if !defined(BOOST_NO_SFINAE)
- typename disable_if<
- is_convertible<const ChainedPtr&,const Class&>,Type&>::type
-#else
- Type&
-#endif
-
- operator()(const ChainedPtr& x)const
- {
- return operator()(*x);
- }
-
- Type& operator()(const Class& x)const
- {
- return x.*PtrToMember;
- }
-
- Type& operator()(const reference_wrapper<const Class>& x)const
- {
- return operator()(x.get());
- }
-
- Type& operator()(const reference_wrapper<Class>& x,int=0)const
- {
- return operator()(x.get());
- }
-};
-
-template<class Class,typename Type,Type Class::*PtrToMember>
-struct non_const_member_base
-{
- typedef Type result_type;
-
- template<typename ChainedPtr>
-
-#if !defined(BOOST_NO_SFINAE)
- typename disable_if<
- is_convertible<const ChainedPtr&,const Class&>,Type&>::type
-#else
- Type&
-#endif
-
- operator()(const ChainedPtr& x)const
- {
- return operator()(*x);
- }
-
- const Type& operator()(const Class& x,int=0)const
- {
- return x.*PtrToMember;
- }
-
- Type& operator()(Class& x)const
- {
- return x.*PtrToMember;
- }
-
- const Type& operator()(const reference_wrapper<const Class>& x,int=0)const
- {
- return operator()(x.get());
- }
-
- Type& operator()(const reference_wrapper<Class>& x)const
- {
- return operator()(x.get());
- }
-};
-
-} /* namespace multi_index::detail */
-
-template<class Class,typename Type,Type Class::*PtrToMember>
-struct member:
- mpl::if_c<
- is_const<Type>::value,
- detail::const_member_base<Class,Type,PtrToMember>,
- detail::non_const_member_base<Class,Type,PtrToMember>
- >::type
-{
-};
-
-namespace detail{
-
-/* MSVC++ 6.0 does not support properly pointers to members as
- * non-type template arguments, as reported in
- * http://support.microsoft.com/default.aspx?scid=kb;EN-US;249045
- * A similar problem (though not identical) is shown by MSVC++ 7.0.
- * We provide an alternative to member<> accepting offsets instead
- * of pointers to members. This happens to work even for non-POD
- * types (although the standard forbids use of offsetof on these),
- * so it serves as a workaround in this compiler for all practical
- * purposes.
- * Surprisingly enough, other compilers, like Intel C++ 7.0/7.1 and
- * Visual Age 6.0, have similar bugs. This replacement of member<>
- * can be used for them too.
- */
-
-template<class Class,typename Type,std::size_t OffsetOfMember>
-struct const_member_offset_base
-{
- typedef Type result_type;
-
- template<typename ChainedPtr>
-
-#if !defined(BOOST_NO_SFINAE)
- typename disable_if<
- is_convertible<const ChainedPtr&,const Class&>,Type&>::type
-#else
- Type&
-#endif
-
- operator()(const ChainedPtr& x)const
- {
- return operator()(*x);
- }
-
- Type& operator()(const Class& x)const
- {
- return *static_cast<const Type*>(
- static_cast<const void*>(
- static_cast<const char*>(
- static_cast<const void *>(&x))+OffsetOfMember));
- }
-
- Type& operator()(const reference_wrapper<const Class>& x)const
- {
- return operator()(x.get());
- }
-
- Type& operator()(const reference_wrapper<Class>& x,int=0)const
- {
- return operator()(x.get());
- }
-};
-
-template<class Class,typename Type,std::size_t OffsetOfMember>
-struct non_const_member_offset_base
-{
- typedef Type result_type;
-
- template<typename ChainedPtr>
-
-#if !defined(BOOST_NO_SFINAE)
- typename disable_if<
- is_convertible<const ChainedPtr&,const Class&>,Type&>::type
-#else
- Type&
-#endif
-
- operator()(const ChainedPtr& x)const
- {
- return operator()(*x);
- }
-
- const Type& operator()(const Class& x,int=0)const
- {
- return *static_cast<const Type*>(
- static_cast<const void*>(
- static_cast<const char*>(
- static_cast<const void *>(&x))+OffsetOfMember));
- }
-
- Type& operator()(Class& x)const
- {
- return *static_cast<Type*>(
- static_cast<void*>(
- static_cast<char*>(static_cast<void *>(&x))+OffsetOfMember));
- }
-
- const Type& operator()(const reference_wrapper<const Class>& x,int=0)const
- {
- return operator()(x.get());
- }
-
- Type& operator()(const reference_wrapper<Class>& x)const
- {
- return operator()(x.get());
- }
-};
-
-} /* namespace multi_index::detail */
-
-template<class Class,typename Type,std::size_t OffsetOfMember>
-struct member_offset:
- mpl::if_c<
- is_const<Type>::value,
- detail::const_member_offset_base<Class,Type,OffsetOfMember>,
- detail::non_const_member_offset_base<Class,Type,OffsetOfMember>
- >::type
-{
-};
-
-/* BOOST_MULTI_INDEX_MEMBER resolves to member in the normal cases,
- * and to member_offset as a workaround in those defective compilers for
- * which BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS is defined.
- */
-
-#if defined(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS)
-#define BOOST_MULTI_INDEX_MEMBER(Class,Type,MemberName) \
-::boost::multi_index::member_offset< Class,Type,offsetof(Class,MemberName) >
-#else
-#define BOOST_MULTI_INDEX_MEMBER(Class,Type,MemberName) \
-::boost::multi_index::member< Class,Type,&Class::MemberName >
-#endif
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/ordered_index.hpp b/3rdParty/Boost/src/boost/multi_index/ordered_index.hpp
deleted file mode 100644
index a49e4cf..0000000
--- a/3rdParty/Boost/src/boost/multi_index/ordered_index.hpp
+++ /dev/null
@@ -1,1390 +0,0 @@
-/* Copyright 2003-2010 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- *
- * The internal implementation of red-black trees is based on that of SGI STL
- * stl_tree.h file:
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-#ifndef BOOST_MULTI_INDEX_ORDERED_INDEX_HPP
-#define BOOST_MULTI_INDEX_ORDERED_INDEX_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/call_traits.hpp>
-#include <boost/detail/no_exceptions_support.hpp>
-#include <boost/detail/workaround.hpp>
-#include <boost/iterator/reverse_iterator.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/multi_index/detail/access_specifier.hpp>
-#include <boost/multi_index/detail/bidir_node_iterator.hpp>
-#include <boost/multi_index/detail/index_node_base.hpp>
-#include <boost/multi_index/detail/modify_key_adaptor.hpp>
-#include <boost/multi_index/detail/ord_index_node.hpp>
-#include <boost/multi_index/detail/ord_index_ops.hpp>
-#include <boost/multi_index/detail/safe_ctr_proxy.hpp>
-#include <boost/multi_index/detail/safe_mode.hpp>
-#include <boost/multi_index/detail/scope_guard.hpp>
-#include <boost/multi_index/detail/unbounded.hpp>
-#include <boost/multi_index/detail/value_compare.hpp>
-#include <boost/multi_index/ordered_index_fwd.hpp>
-#include <boost/ref.hpp>
-#include <boost/tuple/tuple.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <utility>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-#include <boost/archive/archive_exception.hpp>
-#include <boost/bind.hpp>
-#include <boost/multi_index/detail/duplicates_iterator.hpp>
-#include <boost/throw_exception.hpp>
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
-#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT \
- detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)= \
- detail::make_obj_guard(*this,&ordered_index::check_invariant_); \
- BOOST_JOIN(check_invariant_,__LINE__).touch();
-#else
-#define BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* ordered_index adds a layer of ordered indexing to a given Super */
-
-/* Most of the implementation of unique and non-unique indices is
- * shared. We tell from one another on instantiation time by using
- * these tags.
- */
-
-struct ordered_unique_tag{};
-struct ordered_non_unique_tag{};
-
-template<
- typename KeyFromValue,typename Compare,
- typename SuperMeta,typename TagList,typename Category
->
-class ordered_index:
- BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS SuperMeta::type
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- ,public safe_ctr_proxy_impl<
- bidir_node_iterator<
- ordered_index_node<typename SuperMeta::type::node_type> >,
- ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category> >
-#else
- ,public safe_mode::safe_container<
- ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category> >
-#endif
-#endif
-
-{
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
- BOOST_WORKAROUND(__MWERKS__,<=0x3003)
-/* The "ISO C++ Template Parser" option in CW8.3 has a problem with the
- * lifetime of const references bound to temporaries --precisely what
- * scopeguards are.
- */
-
-#pragma parse_mfunc_templ off
-#endif
-
- typedef typename SuperMeta::type super;
-
-protected:
- typedef ordered_index_node<
- typename super::node_type> node_type;
-
-private:
- typedef typename node_type::impl_type node_impl_type;
- typedef typename node_impl_type::pointer node_impl_pointer;
-
-public:
- /* types */
-
- typedef typename KeyFromValue::result_type key_type;
- typedef typename node_type::value_type value_type;
- typedef KeyFromValue key_from_value;
- typedef Compare key_compare;
- typedef value_comparison<
- value_type,KeyFromValue,Compare> value_compare;
- typedef tuple<key_from_value,key_compare> ctor_args;
- typedef typename super::final_allocator_type allocator_type;
- typedef typename allocator_type::reference reference;
- typedef typename allocator_type::const_reference const_reference;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- typedef safe_mode::safe_iterator<
- bidir_node_iterator<node_type>,
- safe_ctr_proxy<
- bidir_node_iterator<node_type> > > iterator;
-#else
- typedef safe_mode::safe_iterator<
- bidir_node_iterator<node_type>,
- ordered_index> iterator;
-#endif
-#else
- typedef bidir_node_iterator<node_type> iterator;
-#endif
-
- typedef iterator const_iterator;
-
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
- typedef typename allocator_type::pointer pointer;
- typedef typename allocator_type::const_pointer const_pointer;
- typedef typename
- boost::reverse_iterator<iterator> reverse_iterator;
- typedef typename
- boost::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef TagList tag_list;
-
-protected:
- typedef typename super::final_node_type final_node_type;
- typedef tuples::cons<
- ctor_args,
- typename super::ctor_args_list> ctor_args_list;
- typedef typename mpl::push_front<
- typename super::index_type_list,
- ordered_index>::type index_type_list;
- typedef typename mpl::push_front<
- typename super::iterator_type_list,
- iterator>::type iterator_type_list;
- typedef typename mpl::push_front<
- typename super::const_iterator_type_list,
- const_iterator>::type const_iterator_type_list;
- typedef typename super::copy_map_type copy_map_type;
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- typedef typename super::index_saver_type index_saver_type;
- typedef typename super::index_loader_type index_loader_type;
-#endif
-
-private:
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- typedef safe_ctr_proxy_impl<
- bidir_node_iterator<node_type>,
- ordered_index> safe_super;
-#else
- typedef safe_mode::safe_container<ordered_index> safe_super;
-#endif
-#endif
-
- typedef typename call_traits<
- value_type>::param_type value_param_type;
- typedef typename call_traits<
- key_type>::param_type key_param_type;
-
-public:
-
- /* construct/copy/destroy
- * Default and copy ctors are in the protected section as indices are
- * not supposed to be created on their own. No range ctor either.
- */
-
- ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& operator=(
- const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x)
- {
- this->final()=x.final();
- return *this;
- }
-
- allocator_type get_allocator()const
- {
- return this->final().get_allocator();
- }
-
- /* iterators */
-
- iterator begin(){return make_iterator(leftmost());}
- const_iterator begin()const{return make_iterator(leftmost());}
- iterator end(){return make_iterator(header());}
- const_iterator end()const{return make_iterator(header());}
- reverse_iterator rbegin(){return make_reverse_iterator(end());}
- const_reverse_iterator rbegin()const{return make_reverse_iterator(end());}
- reverse_iterator rend(){return make_reverse_iterator(begin());}
- const_reverse_iterator rend()const{return make_reverse_iterator(begin());}
- const_iterator cbegin()const{return begin();}
- const_iterator cend()const{return end();}
- const_reverse_iterator crbegin()const{return rbegin();}
- const_reverse_iterator crend()const{return rend();}
-
- iterator iterator_to(const value_type& x)
- {
- return make_iterator(node_from_value<node_type>(&x));
- }
-
- const_iterator iterator_to(const value_type& x)const
- {
- return make_iterator(node_from_value<node_type>(&x));
- }
-
- /* capacity */
-
- bool empty()const{return this->final_empty_();}
- size_type size()const{return this->final_size_();}
- size_type max_size()const{return this->final_max_size_();}
-
- /* modifiers */
-
- std::pair<iterator,bool> insert(value_param_type x)
- {
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- std::pair<final_node_type*,bool> p=this->final_insert_(x);
- return std::pair<iterator,bool>(make_iterator(p.first),p.second);
- }
-
- iterator insert(iterator position,value_param_type x)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- std::pair<final_node_type*,bool> p=this->final_insert_(
- x,static_cast<final_node_type*>(position.get_node()));
- return make_iterator(p.first);
- }
-
- template<typename InputIterator>
- void insert(InputIterator first,InputIterator last)
- {
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- iterator hint=end();
- for(;first!=last;++first)hint=insert(hint,*first);
- }
-
- iterator erase(iterator position)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- this->final_erase_(static_cast<final_node_type*>(position++.get_node()));
- return position;
- }
-
- size_type erase(key_param_type x)
- {
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- std::pair<iterator,iterator> p=equal_range(x);
- size_type s=0;
- while(p.first!=p.second){
- p.first=erase(p.first);
- ++s;
- }
- return s;
- }
-
- iterator erase(iterator first,iterator last)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,*this);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,*this);
- BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- while(first!=last){
- first=erase(first);
- }
- return first;
- }
-
- bool replace(iterator position,value_param_type x)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- return this->final_replace_(
- x,static_cast<final_node_type*>(position.get_node()));
- }
-
- template<typename Modifier>
- bool modify(iterator position,Modifier mod)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- /* MSVC++ 6.0 optimizer on safe mode code chokes if this
- * this is not added. Left it for all compilers as it does no
- * harm.
- */
-
- position.detach();
-#endif
-
- return this->final_modify_(
- mod,static_cast<final_node_type*>(position.get_node()));
- }
-
- template<typename Modifier,typename Rollback>
- bool modify(iterator position,Modifier mod,Rollback back)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- /* MSVC++ 6.0 optimizer on safe mode code chokes if this
- * this is not added. Left it for all compilers as it does no
- * harm.
- */
-
- position.detach();
-#endif
-
- return this->final_modify_(
- mod,back,static_cast<final_node_type*>(position.get_node()));
- }
-
- template<typename Modifier>
- bool modify_key(iterator position,Modifier mod)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- return modify(
- position,modify_key_adaptor<Modifier,value_type,KeyFromValue>(mod,key));
- }
-
- template<typename Modifier,typename Rollback>
- bool modify_key(iterator position,Modifier mod,Rollback back)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- return modify(
- position,
- modify_key_adaptor<Modifier,value_type,KeyFromValue>(mod,key),
- modify_key_adaptor<Rollback,value_type,KeyFromValue>(back,key));
- }
-
- void swap(ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x)
- {
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- this->final_swap_(x.final());
- }
-
- void clear()
- {
- BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT;
- this->final_clear_();
- }
-
- /* observers */
-
- key_from_value key_extractor()const{return key;}
- key_compare key_comp()const{return comp;}
- value_compare value_comp()const{return value_compare(key,comp);}
-
- /* set operations */
-
- /* Internally, these ops rely on const_iterator being the same
- * type as iterator.
- */
-
- template<typename CompatibleKey>
- iterator find(const CompatibleKey& x)const
- {
- return make_iterator(ordered_index_find(root(),header(),key,x,comp));
- }
-
- template<typename CompatibleKey,typename CompatibleCompare>
- iterator find(
- const CompatibleKey& x,const CompatibleCompare& comp)const
- {
- return make_iterator(ordered_index_find(root(),header(),key,x,comp));
- }
-
- template<typename CompatibleKey>
- size_type count(const CompatibleKey& x)const
- {
- return count(x,comp);
- }
-
- template<typename CompatibleKey,typename CompatibleCompare>
- size_type count(const CompatibleKey& x,const CompatibleCompare& comp)const
- {
- std::pair<iterator,iterator> p=equal_range(x,comp);
- size_type n=std::distance(p.first,p.second);
- return n;
- }
-
- template<typename CompatibleKey>
- iterator lower_bound(const CompatibleKey& x)const
- {
- return make_iterator(
- ordered_index_lower_bound(root(),header(),key,x,comp));
- }
-
- template<typename CompatibleKey,typename CompatibleCompare>
- iterator lower_bound(
- const CompatibleKey& x,const CompatibleCompare& comp)const
- {
- return make_iterator(
- ordered_index_lower_bound(root(),header(),key,x,comp));
- }
-
- template<typename CompatibleKey>
- iterator upper_bound(const CompatibleKey& x)const
- {
- return make_iterator(
- ordered_index_upper_bound(root(),header(),key,x,comp));
- }
-
- template<typename CompatibleKey,typename CompatibleCompare>
- iterator upper_bound(
- const CompatibleKey& x,const CompatibleCompare& comp)const
- {
- return make_iterator(
- ordered_index_upper_bound(root(),header(),key,x,comp));
- }
-
- template<typename CompatibleKey>
- std::pair<iterator,iterator> equal_range(
- const CompatibleKey& x)const
- {
- std::pair<node_type*,node_type*> p=
- ordered_index_equal_range(root(),header(),key,x,comp);
- return std::pair<iterator,iterator>(
- make_iterator(p.first),make_iterator(p.second));
- }
-
- template<typename CompatibleKey,typename CompatibleCompare>
- std::pair<iterator,iterator> equal_range(
- const CompatibleKey& x,const CompatibleCompare& comp)const
- {
- std::pair<node_type*,node_type*> p=
- ordered_index_equal_range(root(),header(),key,x,comp);
- return std::pair<iterator,iterator>(
- make_iterator(p.first),make_iterator(p.second));
- }
-
- /* range */
-
- template<typename LowerBounder,typename UpperBounder>
- std::pair<iterator,iterator>
- range(LowerBounder lower,UpperBounder upper)const
- {
- typedef typename mpl::if_<
- is_same<LowerBounder,unbounded_type>,
- BOOST_DEDUCED_TYPENAME mpl::if_<
- is_same<UpperBounder,unbounded_type>,
- both_unbounded_tag,
- lower_unbounded_tag
- >::type,
- BOOST_DEDUCED_TYPENAME mpl::if_<
- is_same<UpperBounder,unbounded_type>,
- upper_unbounded_tag,
- none_unbounded_tag
- >::type
- >::type dispatch;
-
- return range(lower,upper,dispatch());
- }
-
-BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
- ordered_index(const ctor_args_list& args_list,const allocator_type& al):
- super(args_list.get_tail(),al),
- key(tuples::get<0>(args_list.get_head())),
- comp(tuples::get<1>(args_list.get_head()))
- {
- empty_initialize();
- }
-
- ordered_index(
- const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x):
- super(x),
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- safe_super(),
-#endif
-
- key(x.key),
- comp(x.comp)
- {
- /* Copy ctor just takes the key and compare objects from x. The rest is
- * done in subsequent call to copy_().
- */
- }
-
- ~ordered_index()
- {
- /* the container is guaranteed to be empty by now */
- }
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- iterator make_iterator(node_type* node){return iterator(node,this);}
- const_iterator make_iterator(node_type* node)const
- {return const_iterator(node,const_cast<ordered_index*>(this));}
-#else
- iterator make_iterator(node_type* node){return iterator(node);}
- const_iterator make_iterator(node_type* node)const
- {return const_iterator(node);}
-#endif
-
- void copy_(
- const ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x,
- const copy_map_type& map)
- {
- if(!x.root()){
- empty_initialize();
- }
- else{
- header()->color()=x.header()->color();
-
- node_type* root_cpy=map.find(static_cast<final_node_type*>(x.root()));
- header()->parent()=root_cpy->impl();
-
- node_type* leftmost_cpy=map.find(
- static_cast<final_node_type*>(x.leftmost()));
- header()->left()=leftmost_cpy->impl();
-
- node_type* rightmost_cpy=map.find(
- static_cast<final_node_type*>(x.rightmost()));
- header()->right()=rightmost_cpy->impl();
-
- typedef typename copy_map_type::const_iterator copy_map_iterator;
- for(copy_map_iterator it=map.begin(),it_end=map.end();it!=it_end;++it){
- node_type* org=it->first;
- node_type* cpy=it->second;
-
- cpy->color()=org->color();
-
- node_impl_pointer parent_org=org->parent();
- if(parent_org==node_impl_pointer(0))cpy->parent()=node_impl_pointer(0);
- else{
- node_type* parent_cpy=map.find(
- static_cast<final_node_type*>(node_type::from_impl(parent_org)));
- cpy->parent()=parent_cpy->impl();
- if(parent_org->left()==org->impl()){
- parent_cpy->left()=cpy->impl();
- }
- else if(parent_org->right()==org->impl()){
- /* header() does not satisfy this nor the previous check */
- parent_cpy->right()=cpy->impl();
- }
- }
-
- if(org->left()==node_impl_pointer(0))
- cpy->left()=node_impl_pointer(0);
- if(org->right()==node_impl_pointer(0))
- cpy->right()=node_impl_pointer(0);
- }
- }
-
- super::copy_(x,map);
- }
-
- node_type* insert_(value_param_type v,node_type* x)
- {
- link_info inf;
- if(!link_point(key(v),inf,Category())){
- return node_type::from_impl(inf.pos);
- }
-
- node_type* res=static_cast<node_type*>(super::insert_(v,x));
- if(res==x){
- node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
- }
- return res;
- }
-
- node_type* insert_(value_param_type v,node_type* position,node_type* x)
- {
- link_info inf;
- if(!hinted_link_point(key(v),position,inf,Category())){
- return node_type::from_impl(inf.pos);
- }
-
- node_type* res=static_cast<node_type*>(super::insert_(v,position,x));
- if(res==x){
- node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
- }
- return res;
- }
-
- void erase_(node_type* x)
- {
- node_impl_type::rebalance_for_erase(
- x->impl(),header()->parent(),header()->left(),header()->right());
- super::erase_(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
- }
-
- void delete_all_nodes_()
- {
- delete_all_nodes(root());
- }
-
- void clear_()
- {
- super::clear_();
- empty_initialize();
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- safe_super::detach_dereferenceable_iterators();
-#endif
- }
-
- void swap_(ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x)
- {
- std::swap(key,x.key);
- std::swap(comp,x.comp);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- safe_super::swap(x);
-#endif
-
- super::swap_(x);
- }
-
- bool replace_(value_param_type v,node_type* x)
- {
- if(in_place(v,x,Category())){
- return super::replace_(v,x);
- }
-
- node_type* next=x;
- node_type::increment(next);
-
- node_impl_type::rebalance_for_erase(
- x->impl(),header()->parent(),header()->left(),header()->right());
-
- BOOST_TRY{
- link_info inf;
- if(link_point(key(v),inf,Category())&&super::replace_(v,x)){
- node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
- return true;
- }
- node_impl_type::restore(x->impl(),next->impl(),header()->impl());
- return false;
- }
- BOOST_CATCH(...){
- node_impl_type::restore(x->impl(),next->impl(),header()->impl());
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- bool modify_(node_type* x)
- {
- bool b;
- BOOST_TRY{
- b=in_place(x->value(),x,Category());
- }
- BOOST_CATCH(...){
- erase_(x);
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- if(!b){
- node_impl_type::rebalance_for_erase(
- x->impl(),header()->parent(),header()->left(),header()->right());
- BOOST_TRY{
- link_info inf;
- if(!link_point(key(x->value()),inf,Category())){
- super::erase_(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
- return false;
- }
- node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
- }
- BOOST_CATCH(...){
- super::erase_(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
-
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- BOOST_TRY{
- if(!super::modify_(x)){
- node_impl_type::rebalance_for_erase(
- x->impl(),header()->parent(),header()->left(),header()->right());
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
-
- return false;
- }
- else return true;
- }
- BOOST_CATCH(...){
- node_impl_type::rebalance_for_erase(
- x->impl(),header()->parent(),header()->left(),header()->right());
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
-
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- bool modify_rollback_(node_type* x)
- {
- if(in_place(x->value(),x,Category())){
- return super::modify_rollback_(x);
- }
-
- node_type* next=x;
- node_type::increment(next);
-
- node_impl_type::rebalance_for_erase(
- x->impl(),header()->parent(),header()->left(),header()->right());
-
- BOOST_TRY{
- link_info inf;
- if(link_point(key(x->value()),inf,Category())&&
- super::modify_rollback_(x)){
- node_impl_type::link(x->impl(),inf.side,inf.pos,header()->impl());
- return true;
- }
- node_impl_type::restore(x->impl(),next->impl(),header()->impl());
- return false;
- }
- BOOST_CATCH(...){
- node_impl_type::restore(x->impl(),next->impl(),header()->impl());
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- /* serialization */
-
- template<typename Archive>
- void save_(
- Archive& ar,const unsigned int version,const index_saver_type& sm)const
- {
- save_(ar,version,sm,Category());
- }
-
- template<typename Archive>
- void load_(Archive& ar,const unsigned int version,const index_loader_type& lm)
- {
- load_(ar,version,lm,Category());
- }
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
- /* invariant stuff */
-
- bool invariant_()const
- {
- if(size()==0||begin()==end()){
- if(size()!=0||begin()!=end()||
- header()->left()!=header()->impl()||
- header()->right()!=header()->impl())return false;
- }
- else{
- if((size_type)std::distance(begin(),end())!=size())return false;
-
- std::size_t len=node_impl_type::black_count(
- leftmost()->impl(),root()->impl());
- for(const_iterator it=begin(),it_end=end();it!=it_end;++it){
- node_type* x=it.get_node();
- node_type* left_x=node_type::from_impl(x->left());
- node_type* right_x=node_type::from_impl(x->right());
-
- if(x->color()==red){
- if((left_x&&left_x->color()==red)||
- (right_x&&right_x->color()==red))return false;
- }
- if(left_x&&comp(key(x->value()),key(left_x->value())))return false;
- if(right_x&&comp(key(right_x->value()),key(x->value())))return false;
- if(!left_x&&!right_x&&
- node_impl_type::black_count(x->impl(),root()->impl())!=len)
- return false;
- }
-
- if(leftmost()->impl()!=node_impl_type::minimum(root()->impl()))
- return false;
- if(rightmost()->impl()!=node_impl_type::maximum(root()->impl()))
- return false;
- }
-
- return super::invariant_();
- }
-
-
- /* This forwarding function eases things for the boost::mem_fn construct
- * in BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT. Actually,
- * final_check_invariant is already an inherited member function of
- * ordered_index.
- */
- void check_invariant_()const{this->final_check_invariant_();}
-#endif
-
-private:
- node_type* header()const{return this->final_header();}
- node_type* root()const{return node_type::from_impl(header()->parent());}
- node_type* leftmost()const{return node_type::from_impl(header()->left());}
- node_type* rightmost()const{return node_type::from_impl(header()->right());}
-
- void empty_initialize()
- {
- header()->color()=red;
- /* used to distinguish header() from root, in iterator.operator++ */
-
- header()->parent()=node_impl_pointer(0);
- header()->left()=header()->impl();
- header()->right()=header()->impl();
- }
-
- struct link_info
- {
- link_info():side(to_left){}
-
- ordered_index_side side;
- node_impl_pointer pos;
- };
-
- bool link_point(key_param_type k,link_info& inf,ordered_unique_tag)
- {
- node_type* y=header();
- node_type* x=root();
- bool c=true;
- while(x){
- y=x;
- c=comp(k,key(x->value()));
- x=node_type::from_impl(c?x->left():x->right());
- }
- node_type* yy=y;
- if(c){
- if(yy==leftmost()){
- inf.side=to_left;
- inf.pos=y->impl();
- return true;
- }
- else node_type::decrement(yy);
- }
-
- if(comp(key(yy->value()),k)){
- inf.side=c?to_left:to_right;
- inf.pos=y->impl();
- return true;
- }
- else{
- inf.pos=yy->impl();
- return false;
- }
- }
-
- bool link_point(key_param_type k,link_info& inf,ordered_non_unique_tag)
- {
- node_type* y=header();
- node_type* x=root();
- bool c=true;
- while (x){
- y=x;
- c=comp(k,key(x->value()));
- x=node_type::from_impl(c?x->left():x->right());
- }
- inf.side=c?to_left:to_right;
- inf.pos=y->impl();
- return true;
- }
-
- bool lower_link_point(key_param_type k,link_info& inf,ordered_non_unique_tag)
- {
- node_type* y=header();
- node_type* x=root();
- bool c=false;
- while (x){
- y=x;
- c=comp(key(x->value()),k);
- x=node_type::from_impl(c?x->right():x->left());
- }
- inf.side=c?to_right:to_left;
- inf.pos=y->impl();
- return true;
- }
-
- bool hinted_link_point(
- key_param_type k,node_type* position,link_info& inf,ordered_unique_tag)
- {
- if(position->impl()==header()->left()){
- if(size()>0&&comp(k,key(position->value()))){
- inf.side=to_left;
- inf.pos=position->impl();
- return true;
- }
- else return link_point(k,inf,ordered_unique_tag());
- }
- else if(position==header()){
- if(comp(key(rightmost()->value()),k)){
- inf.side=to_right;
- inf.pos=rightmost()->impl();
- return true;
- }
- else return link_point(k,inf,ordered_unique_tag());
- }
- else{
- node_type* before=position;
- node_type::decrement(before);
- if(comp(key(before->value()),k)&&comp(k,key(position->value()))){
- if(before->right()==node_impl_pointer(0)){
- inf.side=to_right;
- inf.pos=before->impl();
- return true;
- }
- else{
- inf.side=to_left;
- inf.pos=position->impl();
- return true;
- }
- }
- else return link_point(k,inf,ordered_unique_tag());
- }
- }
-
- bool hinted_link_point(
- key_param_type k,node_type* position,link_info& inf,ordered_non_unique_tag)
- {
- if(position->impl()==header()->left()){
- if(size()>0&&!comp(key(position->value()),k)){
- inf.side=to_left;
- inf.pos=position->impl();
- return true;
- }
- else return lower_link_point(k,inf,ordered_non_unique_tag());
- }
- else if(position==header()){
- if(!comp(k,key(rightmost()->value()))){
- inf.side=to_right;
- inf.pos=rightmost()->impl();
- return true;
- }
- else return link_point(k,inf,ordered_non_unique_tag());
- }
- else{
- node_type* before=position;
- node_type::decrement(before);
- if(!comp(k,key(before->value()))){
- if(!comp(key(position->value()),k)){
- if(before->right()==node_impl_pointer(0)){
- inf.side=to_right;
- inf.pos=before->impl();
- return true;
- }
- else{
- inf.side=to_left;
- inf.pos=position->impl();
- return true;
- }
- }
- else return lower_link_point(k,inf,ordered_non_unique_tag());
- }
- else return link_point(k,inf,ordered_non_unique_tag());
- }
- }
-
- void delete_all_nodes(node_type* x)
- {
- if(!x)return;
-
- delete_all_nodes(node_type::from_impl(x->left()));
- delete_all_nodes(node_type::from_impl(x->right()));
- this->final_delete_node_(static_cast<final_node_type*>(x));
- }
-
- bool in_place(value_param_type v,node_type* x,ordered_unique_tag)
- {
- node_type* y;
- if(x!=leftmost()){
- y=x;
- node_type::decrement(y);
- if(!comp(key(y->value()),key(v)))return false;
- }
-
- y=x;
- node_type::increment(y);
- return y==header()||comp(key(v),key(y->value()));
- }
-
- bool in_place(value_param_type v,node_type* x,ordered_non_unique_tag)
- {
- node_type* y;
- if(x!=leftmost()){
- y=x;
- node_type::decrement(y);
- if(comp(key(v),key(y->value())))return false;
- }
-
- y=x;
- node_type::increment(y);
- return y==header()||!comp(key(y->value()),key(v));
- }
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- void detach_iterators(node_type* x)
- {
- iterator it=make_iterator(x);
- safe_mode::detach_equivalent_iterators(it);
- }
-#endif
-
- template<typename LowerBounder,typename UpperBounder>
- std::pair<iterator,iterator>
- range(LowerBounder lower,UpperBounder upper,none_unbounded_tag)const
- {
- node_type* y=header();
- node_type* z=root();
-
- while(z){
- if(!lower(key(z->value()))){
- z=node_type::from_impl(z->right());
- }
- else if(!upper(key(z->value()))){
- y=z;
- z=node_type::from_impl(z->left());
- }
- else{
- return std::pair<iterator,iterator>(
- make_iterator(
- lower_range(node_type::from_impl(z->left()),z,lower)),
- make_iterator(
- upper_range(node_type::from_impl(z->right()),y,upper)));
- }
- }
-
- return std::pair<iterator,iterator>(make_iterator(y),make_iterator(y));
- }
-
- template<typename LowerBounder,typename UpperBounder>
- std::pair<iterator,iterator>
- range(LowerBounder,UpperBounder upper,lower_unbounded_tag)const
- {
- return std::pair<iterator,iterator>(
- begin(),
- make_iterator(upper_range(root(),header(),upper)));
- }
-
- template<typename LowerBounder,typename UpperBounder>
- std::pair<iterator,iterator>
- range(LowerBounder lower,UpperBounder,upper_unbounded_tag)const
- {
- return std::pair<iterator,iterator>(
- make_iterator(lower_range(root(),header(),lower)),
- end());
- }
-
- template<typename LowerBounder,typename UpperBounder>
- std::pair<iterator,iterator>
- range(LowerBounder,UpperBounder,both_unbounded_tag)const
- {
- return std::pair<iterator,iterator>(begin(),end());
- }
-
- template<typename LowerBounder>
- node_type * lower_range(node_type* top,node_type* y,LowerBounder lower)const
- {
- while(top){
- if(lower(key(top->value()))){
- y=top;
- top=node_type::from_impl(top->left());
- }
- else top=node_type::from_impl(top->right());
- }
-
- return y;
- }
-
- template<typename UpperBounder>
- node_type * upper_range(node_type* top,node_type* y,UpperBounder upper)const
- {
- while(top){
- if(!upper(key(top->value()))){
- y=top;
- top=node_type::from_impl(top->left());
- }
- else top=node_type::from_impl(top->right());
- }
-
- return y;
- }
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- template<typename Archive>
- void save_(
- Archive& ar,const unsigned int version,const index_saver_type& sm,
- ordered_unique_tag)const
- {
- super::save_(ar,version,sm);
- }
-
- template<typename Archive>
- void load_(
- Archive& ar,const unsigned int version,const index_loader_type& lm,
- ordered_unique_tag)
- {
- super::load_(ar,version,lm);
- }
-
- template<typename Archive>
- void save_(
- Archive& ar,const unsigned int version,const index_saver_type& sm,
- ordered_non_unique_tag)const
- {
- typedef duplicates_iterator<node_type,value_compare> dup_iterator;
-
- sm.save(
- dup_iterator(begin().get_node(),end().get_node(),value_comp()),
- dup_iterator(end().get_node(),value_comp()),
- ar,version);
- super::save_(ar,version,sm);
- }
-
- template<typename Archive>
- void load_(
- Archive& ar,const unsigned int version,const index_loader_type& lm,
- ordered_non_unique_tag)
- {
- lm.load(
- ::boost::bind(&ordered_index::rearranger,this,_1,_2),
- ar,version);
- super::load_(ar,version,lm);
- }
-
- void rearranger(node_type* position,node_type *x)
- {
- if(!position||comp(key(position->value()),key(x->value()))){
- position=lower_bound(key(x->value())).get_node();
- }
- else if(comp(key(x->value()),key(position->value()))){
- /* inconsistent rearrangement */
- throw_exception(
- archive::archive_exception(
- archive::archive_exception::other_exception));
- }
- else node_type::increment(position);
-
- if(position!=x){
- node_impl_type::rebalance_for_erase(
- x->impl(),header()->parent(),header()->left(),header()->right());
- node_impl_type::restore(
- x->impl(),position->impl(),header()->impl());
- }
- }
-#endif /* serialization */
-
- key_from_value key;
- key_compare comp;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
- BOOST_WORKAROUND(__MWERKS__,<=0x3003)
-#pragma parse_mfunc_templ reset
-#endif
-};
-
-/* comparison */
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator==(
- const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
-{
- return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin());
-}
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator<(
- const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
-{
- return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
-}
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator!=(
- const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
-{
- return !(x==y);
-}
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator>(
- const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
-{
- return y<x;
-}
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator>=(
- const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
-{
- return !(x<y);
-}
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator<=(
- const ordered_index<KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y)
-{
- return !(x>y);
-}
-
-/* specialized algorithms */
-
-template<
- typename KeyFromValue,typename Compare,
- typename SuperMeta,typename TagList,typename Category
->
-void swap(
- ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x,
- ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& y)
-{
- x.swap(y);
-}
-
-} /* namespace multi_index::detail */
-
-/* ordered_index specifiers */
-
-template<typename Arg1,typename Arg2,typename Arg3>
-struct ordered_unique
-{
- typedef typename detail::ordered_index_args<
- Arg1,Arg2,Arg3> index_args;
- typedef typename index_args::tag_list_type::type tag_list_type;
- typedef typename index_args::key_from_value_type key_from_value_type;
- typedef typename index_args::compare_type compare_type;
-
- template<typename Super>
- struct node_class
- {
- typedef detail::ordered_index_node<Super> type;
- };
-
- template<typename SuperMeta>
- struct index_class
- {
- typedef detail::ordered_index<
- key_from_value_type,compare_type,
- SuperMeta,tag_list_type,detail::ordered_unique_tag> type;
- };
-};
-
-template<typename Arg1,typename Arg2,typename Arg3>
-struct ordered_non_unique
-{
- typedef detail::ordered_index_args<
- Arg1,Arg2,Arg3> index_args;
- typedef typename index_args::tag_list_type::type tag_list_type;
- typedef typename index_args::key_from_value_type key_from_value_type;
- typedef typename index_args::compare_type compare_type;
-
- template<typename Super>
- struct node_class
- {
- typedef detail::ordered_index_node<Super> type;
- };
-
- template<typename SuperMeta>
- struct index_class
- {
- typedef detail::ordered_index<
- key_from_value_type,compare_type,
- SuperMeta,tag_list_type,detail::ordered_non_unique_tag> type;
- };
-};
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#undef BOOST_MULTI_INDEX_ORD_INDEX_CHECK_INVARIANT
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/ordered_index_fwd.hpp b/3rdParty/Boost/src/boost/multi_index/ordered_index_fwd.hpp
deleted file mode 100644
index 6288a71..0000000
--- a/3rdParty/Boost/src/boost/multi_index/ordered_index_fwd.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_ORDERED_INDEX_FWD_HPP
-#define BOOST_MULTI_INDEX_ORDERED_INDEX_FWD_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/multi_index/detail/ord_index_args.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-template<
- typename KeyFromValue,typename Compare,
- typename SuperMeta,typename TagList,typename Category
->
-class ordered_index;
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator==(
- const ordered_index<
- KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<
- KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y);
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator<(
- const ordered_index<
- KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<
- KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y);
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator!=(
- const ordered_index<
- KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<
- KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y);
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator>(
- const ordered_index<
- KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<
- KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y);
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator>=(
- const ordered_index<
- KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<
- KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y);
-
-template<
- typename KeyFromValue1,typename Compare1,
- typename SuperMeta1,typename TagList1,typename Category1,
- typename KeyFromValue2,typename Compare2,
- typename SuperMeta2,typename TagList2,typename Category2
->
-bool operator<=(
- const ordered_index<
- KeyFromValue1,Compare1,SuperMeta1,TagList1,Category1>& x,
- const ordered_index<
- KeyFromValue2,Compare2,SuperMeta2,TagList2,Category2>& y);
-
-template<
- typename KeyFromValue,typename Compare,
- typename SuperMeta,typename TagList,typename Category
->
-void swap(
- ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& x,
- ordered_index<KeyFromValue,Compare,SuperMeta,TagList,Category>& y);
-
-} /* namespace multi_index::detail */
-
-/* ordered_index specifiers */
-
-template<typename Arg1,typename Arg2=mpl::na,typename Arg3=mpl::na>
-struct ordered_unique;
-
-template<typename Arg1,typename Arg2=mpl::na,typename Arg3=mpl::na>
-struct ordered_non_unique;
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/safe_mode_errors.hpp b/3rdParty/Boost/src/boost/multi_index/safe_mode_errors.hpp
deleted file mode 100644
index ff6f960..0000000
--- a/3rdParty/Boost/src/boost/multi_index/safe_mode_errors.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_SAFE_MODE_ERRORS_HPP
-#define BOOST_MULTI_INDEX_SAFE_MODE_ERRORS_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace safe_mode{
-
-/* Error codes for Boost.MultiIndex safe mode. These go in a separate
- * header so that the user can include it when redefining
- * BOOST_MULTI_INDEX_SAFE_MODE_ASSERT prior to the inclusion of
- * any other header of Boost.MultiIndex.
- */
-
-enum error_code
-{
- invalid_iterator=0,
- not_dereferenceable_iterator,
- not_incrementable_iterator,
- not_decrementable_iterator,
- not_owner,
- not_same_owner,
- invalid_range,
- inside_range,
- out_of_bounds,
- same_container
-};
-
-} /* namespace multi_index::safe_mode */
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/sequenced_index.hpp b/3rdParty/Boost/src/boost/multi_index/sequenced_index.hpp
deleted file mode 100644
index 8e09115..0000000
--- a/3rdParty/Boost/src/boost/multi_index/sequenced_index.hpp
+++ /dev/null
@@ -1,922 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_SEQUENCED_INDEX_HPP
-#define BOOST_MULTI_INDEX_SEQUENCED_INDEX_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/call_traits.hpp>
-#include <boost/detail/allocator_utilities.hpp>
-#include <boost/detail/no_exceptions_support.hpp>
-#include <boost/detail/workaround.hpp>
-#include <boost/iterator/reverse_iterator.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/mpl/push_front.hpp>
-#include <boost/multi_index/detail/access_specifier.hpp>
-#include <boost/multi_index/detail/bidir_node_iterator.hpp>
-#include <boost/multi_index/detail/index_node_base.hpp>
-#include <boost/multi_index/detail/safe_ctr_proxy.hpp>
-#include <boost/multi_index/detail/safe_mode.hpp>
-#include <boost/multi_index/detail/scope_guard.hpp>
-#include <boost/multi_index/detail/seq_index_node.hpp>
-#include <boost/multi_index/detail/seq_index_ops.hpp>
-#include <boost/multi_index/sequenced_index_fwd.hpp>
-#include <boost/tuple/tuple.hpp>
-#include <boost/type_traits/is_integral.hpp>
-#include <cstddef>
-#include <functional>
-#include <utility>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-#include <boost/bind.hpp>
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
-#define BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT \
- detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)= \
- detail::make_obj_guard(*this,&sequenced_index::check_invariant_); \
- BOOST_JOIN(check_invariant_,__LINE__).touch();
-#else
-#define BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-/* sequenced_index adds a layer of sequenced indexing to a given Super */
-
-template<typename SuperMeta,typename TagList>
-class sequenced_index:
- BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS SuperMeta::type
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- ,public safe_ctr_proxy_impl<
- bidir_node_iterator<
- sequenced_index_node<typename SuperMeta::type::node_type> >,
- sequenced_index<SuperMeta,TagList> >
-#else
- ,public safe_mode::safe_container<
- sequenced_index<SuperMeta,TagList> >
-#endif
-#endif
-
-{
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
- BOOST_WORKAROUND(__MWERKS__,<=0x3003)
-/* The "ISO C++ Template Parser" option in CW8.3 has a problem with the
- * lifetime of const references bound to temporaries --precisely what
- * scopeguards are.
- */
-
-#pragma parse_mfunc_templ off
-#endif
-
- typedef typename SuperMeta::type super;
-
-protected:
- typedef sequenced_index_node<
- typename super::node_type> node_type;
-
-private:
- typedef typename node_type::impl_type node_impl_type;
-
-public:
- /* types */
-
- typedef typename node_type::value_type value_type;
- typedef tuples::null_type ctor_args;
- typedef typename super::final_allocator_type allocator_type;
- typedef typename allocator_type::reference reference;
- typedef typename allocator_type::const_reference const_reference;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- typedef safe_mode::safe_iterator<
- bidir_node_iterator<node_type>,
- safe_ctr_proxy<
- bidir_node_iterator<node_type> > > iterator;
-#else
- typedef safe_mode::safe_iterator<
- bidir_node_iterator<node_type>,
- sequenced_index> iterator;
-#endif
-#else
- typedef bidir_node_iterator<node_type> iterator;
-#endif
-
- typedef iterator const_iterator;
-
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
- typedef typename allocator_type::pointer pointer;
- typedef typename allocator_type::const_pointer const_pointer;
- typedef typename
- boost::reverse_iterator<iterator> reverse_iterator;
- typedef typename
- boost::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef TagList tag_list;
-
-protected:
- typedef typename super::final_node_type final_node_type;
- typedef tuples::cons<
- ctor_args,
- typename super::ctor_args_list> ctor_args_list;
- typedef typename mpl::push_front<
- typename super::index_type_list,
- sequenced_index>::type index_type_list;
- typedef typename mpl::push_front<
- typename super::iterator_type_list,
- iterator>::type iterator_type_list;
- typedef typename mpl::push_front<
- typename super::const_iterator_type_list,
- const_iterator>::type const_iterator_type_list;
- typedef typename super::copy_map_type copy_map_type;
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- typedef typename super::index_saver_type index_saver_type;
- typedef typename super::index_loader_type index_loader_type;
-#endif
-
-private:
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- typedef safe_ctr_proxy_impl<
- bidir_node_iterator<node_type>,
- sequenced_index> safe_super;
-#else
- typedef safe_mode::safe_container<
- sequenced_index> safe_super;
-#endif
-#endif
-
- typedef typename call_traits<value_type>::param_type value_param_type;
-
-public:
-
- /* construct/copy/destroy
- * Default and copy ctors are in the protected section as indices are
- * not supposed to be created on their own. No range ctor either.
- */
-
- sequenced_index<SuperMeta,TagList>& operator=(
- const sequenced_index<SuperMeta,TagList>& x)
- {
- this->final()=x.final();
- return *this;
- }
-
- template <class InputIterator>
- void assign(InputIterator first,InputIterator last)
- {
- assign_iter(first,last,mpl::not_<is_integral<InputIterator> >());
- }
-
- void assign(size_type n,value_param_type value)
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- clear();
- for(size_type i=0;i<n;++i)push_back(value);
- }
-
- allocator_type get_allocator()const
- {
- return this->final().get_allocator();
- }
-
- /* iterators */
-
- iterator begin()
- {return make_iterator(node_type::from_impl(header()->next()));}
- const_iterator begin()const
- {return make_iterator(node_type::from_impl(header()->next()));}
- iterator end(){return make_iterator(header());}
- const_iterator end()const{return make_iterator(header());}
- reverse_iterator rbegin(){return make_reverse_iterator(end());}
- const_reverse_iterator rbegin()const{return make_reverse_iterator(end());}
- reverse_iterator rend(){return make_reverse_iterator(begin());}
- const_reverse_iterator rend()const{return make_reverse_iterator(begin());}
- const_iterator cbegin()const{return begin();}
- const_iterator cend()const{return end();}
- const_reverse_iterator crbegin()const{return rbegin();}
- const_reverse_iterator crend()const{return rend();}
-
- iterator iterator_to(const value_type& x)
- {
- return make_iterator(node_from_value<node_type>(&x));
- }
-
- const_iterator iterator_to(const value_type& x)const
- {
- return make_iterator(node_from_value<node_type>(&x));
- }
-
- /* capacity */
-
- bool empty()const{return this->final_empty_();}
- size_type size()const{return this->final_size_();}
- size_type max_size()const{return this->final_max_size_();}
-
- void resize(size_type n,value_param_type x=value_type())
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- if(n>size())insert(end(),n-size(),x);
- else if(n<size()){
- iterator it;
- if(n<=size()/2){
- it=begin();
- std::advance(it,n);
- }
- else{
- it=end();
- for(size_type m=size()-n;m--;--it){}
- }
- erase(it,end());
- }
- }
-
- /* access: no non-const versions provided as sequenced_index
- * handles const elements.
- */
-
- const_reference front()const{return *begin();}
- const_reference back()const{return *--end();}
-
- /* modifiers */
-
- std::pair<iterator,bool> push_front(value_param_type x)
- {return insert(begin(),x);}
- void pop_front(){erase(begin());}
- std::pair<iterator,bool> push_back(value_param_type x)
- {return insert(end(),x);}
- void pop_back(){erase(--end());}
-
- std::pair<iterator,bool> insert(iterator position,value_param_type x)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- std::pair<final_node_type*,bool> p=this->final_insert_(x);
- if(p.second&&position.get_node()!=header()){
- relink(position.get_node(),p.first);
- }
- return std::pair<iterator,bool>(make_iterator(p.first),p.second);
- }
-
- void insert(iterator position,size_type n,value_param_type x)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- for(size_type i=0;i<n;++i)insert(position,x);
- }
-
- template<typename InputIterator>
- void insert(iterator position,InputIterator first,InputIterator last)
- {
- insert_iter(position,first,last,mpl::not_<is_integral<InputIterator> >());
- }
-
- iterator erase(iterator position)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- this->final_erase_(static_cast<final_node_type*>(position++.get_node()));
- return position;
- }
-
- iterator erase(iterator first,iterator last)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,*this);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,*this);
- BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- while(first!=last){
- first=erase(first);
- }
- return first;
- }
-
- bool replace(iterator position,value_param_type x)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- return this->final_replace_(
- x,static_cast<final_node_type*>(position.get_node()));
- }
-
- template<typename Modifier>
- bool modify(iterator position,Modifier mod)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- /* MSVC++ 6.0 optimizer on safe mode code chokes if this
- * this is not added. Left it for all compilers as it does no
- * harm.
- */
-
- position.detach();
-#endif
-
- return this->final_modify_(
- mod,static_cast<final_node_type*>(position.get_node()));
- }
-
- template<typename Modifier,typename Rollback>
- bool modify(iterator position,Modifier mod,Rollback back)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- /* MSVC++ 6.0 optimizer on safe mode code chokes if this
- * this is not added. Left it for all compilers as it does no
- * harm.
- */
-
- position.detach();
-#endif
-
- return this->final_modify_(
- mod,back,static_cast<final_node_type*>(position.get_node()));
- }
-
- void swap(sequenced_index<SuperMeta,TagList>& x)
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- this->final_swap_(x.final());
- }
-
- void clear()
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- this->final_clear_();
- }
-
- /* list operations */
-
- void splice(iterator position,sequenced_index<SuperMeta,TagList>& x)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_CHECK_DIFFERENT_CONTAINER(*this,x);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- iterator first=x.begin(),last=x.end();
- while(first!=last){
- if(insert(position,*first).second)first=x.erase(first);
- else ++first;
- }
- }
-
- void splice(iterator position,sequenced_index<SuperMeta,TagList>& x,iterator i)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(i);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(i);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(i,x);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- if(&x==this){
- if(position!=i)relink(position.get_node(),i.get_node());
- }
- else{
- if(insert(position,*i).second){
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- /* MSVC++ 6.0 optimizer has a hard time with safe mode, and the following
- * workaround is needed. Left it for all compilers as it does no
- * harm.
- */
- i.detach();
- x.erase(x.make_iterator(i.get_node()));
-#else
- x.erase(i);
-#endif
-
- }
- }
- }
-
- void splice(
- iterator position,sequenced_index<SuperMeta,TagList>& x,
- iterator first,iterator last)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,x);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,x);
- BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- if(&x==this){
- BOOST_MULTI_INDEX_CHECK_OUTSIDE_RANGE(position,first,last);
- if(position!=last)relink(
- position.get_node(),first.get_node(),last.get_node());
- }
- else{
- while(first!=last){
- if(insert(position,*first).second)first=x.erase(first);
- else ++first;
- }
- }
- }
-
- void remove(value_param_type value)
- {
- sequenced_index_remove(
- *this,std::bind2nd(std::equal_to<value_type>(),value));
- }
-
- template<typename Predicate>
- void remove_if(Predicate pred)
- {
- sequenced_index_remove(*this,pred);
- }
-
- void unique()
- {
- sequenced_index_unique(*this,std::equal_to<value_type>());
- }
-
- template <class BinaryPredicate>
- void unique(BinaryPredicate binary_pred)
- {
- sequenced_index_unique(*this,binary_pred);
- }
-
- void merge(sequenced_index<SuperMeta,TagList>& x)
- {
- sequenced_index_merge(*this,x,std::less<value_type>());
- }
-
- template <typename Compare>
- void merge(sequenced_index<SuperMeta,TagList>& x,Compare comp)
- {
- sequenced_index_merge(*this,x,comp);
- }
-
- void sort()
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- sequenced_index_sort(header(),std::less<value_type>());
- }
-
- template <typename Compare>
- void sort(Compare comp)
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- sequenced_index_sort(header(),comp);
- }
-
- void reverse()
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- node_impl_type::reverse(header()->impl());
- }
-
- /* rearrange operations */
-
- void relocate(iterator position,iterator i)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(i);
- BOOST_MULTI_INDEX_CHECK_DEREFERENCEABLE_ITERATOR(i);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(i,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- if(position!=i)relink(position.get_node(),i.get_node());
- }
-
- void relocate(iterator position,iterator first,iterator last)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(first);
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(last);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(first,*this);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(last,*this);
- BOOST_MULTI_INDEX_CHECK_VALID_RANGE(first,last);
- BOOST_MULTI_INDEX_CHECK_OUTSIDE_RANGE(position,first,last);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- if(position!=last)relink(
- position.get_node(),first.get_node(),last.get_node());
- }
-
- template<typename InputIterator>
- void rearrange(InputIterator first)
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- node_type* pos=header();
- for(size_type s=size();s--;){
- const value_type& v=*first++;
- relink(pos,node_from_value<node_type>(&v));
- }
- }
-
-BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
- sequenced_index(const ctor_args_list& args_list,const allocator_type& al):
- super(args_list.get_tail(),al)
- {
- empty_initialize();
- }
-
- sequenced_index(const sequenced_index<SuperMeta,TagList>& x):
- super(x)
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- ,safe_super()
-#endif
-
- {
- /* The actual copying takes place in subsequent call to copy_().
- */
- }
-
- ~sequenced_index()
- {
- /* the container is guaranteed to be empty by now */
- }
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- iterator make_iterator(node_type* node){return iterator(node,this);}
- const_iterator make_iterator(node_type* node)const
- {return const_iterator(node,const_cast<sequenced_index*>(this));}
-#else
- iterator make_iterator(node_type* node){return iterator(node);}
- const_iterator make_iterator(node_type* node)const
- {return const_iterator(node);}
-#endif
-
- void copy_(
- const sequenced_index<SuperMeta,TagList>& x,const copy_map_type& map)
- {
- node_type* org=x.header();
- node_type* cpy=header();
- do{
- node_type* next_org=node_type::from_impl(org->next());
- node_type* next_cpy=map.find(static_cast<final_node_type*>(next_org));
- cpy->next()=next_cpy->impl();
- next_cpy->prior()=cpy->impl();
- org=next_org;
- cpy=next_cpy;
- }while(org!=x.header());
-
- super::copy_(x,map);
- }
-
- node_type* insert_(value_param_type v,node_type* x)
- {
- node_type* res=static_cast<node_type*>(super::insert_(v,x));
- if(res==x)link(x);
- return res;
- }
-
- node_type* insert_(value_param_type v,node_type* position,node_type* x)
- {
- node_type* res=static_cast<node_type*>(super::insert_(v,position,x));
- if(res==x)link(x);
- return res;
- }
-
- void erase_(node_type* x)
- {
- unlink(x);
- super::erase_(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
- }
-
- void delete_all_nodes_()
- {
- for(node_type* x=node_type::from_impl(header()->next());x!=header();){
- node_type* y=node_type::from_impl(x->next());
- this->final_delete_node_(static_cast<final_node_type*>(x));
- x=y;
- }
- }
-
- void clear_()
- {
- super::clear_();
- empty_initialize();
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- safe_super::detach_dereferenceable_iterators();
-#endif
- }
-
- void swap_(sequenced_index<SuperMeta,TagList>& x)
- {
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- safe_super::swap(x);
-#endif
-
- super::swap_(x);
- }
-
- bool replace_(value_param_type v,node_type* x)
- {
- return super::replace_(v,x);
- }
-
- bool modify_(node_type* x)
- {
- BOOST_TRY{
- if(!super::modify_(x)){
- unlink(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
-
- return false;
- }
- else return true;
- }
- BOOST_CATCH(...){
- unlink(x);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- detach_iterators(x);
-#endif
-
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- bool modify_rollback_(node_type* x)
- {
- return super::modify_rollback_(x);
- }
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- /* serialization */
-
- template<typename Archive>
- void save_(
- Archive& ar,const unsigned int version,const index_saver_type& sm)const
- {
- sm.save(begin(),end(),ar,version);
- super::save_(ar,version,sm);
- }
-
- template<typename Archive>
- void load_(
- Archive& ar,const unsigned int version,const index_loader_type& lm)
- {
- lm.load(
- ::boost::bind(&sequenced_index::rearranger,this,_1,_2),
- ar,version);
- super::load_(ar,version,lm);
- }
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
- /* invariant stuff */
-
- bool invariant_()const
- {
- if(size()==0||begin()==end()){
- if(size()!=0||begin()!=end()||
- header()->next()!=header()->impl()||
- header()->prior()!=header()->impl())return false;
- }
- else{
- size_type s=0;
- for(const_iterator it=begin(),it_end=end();it!=it_end;++it,++s){
- if(it.get_node()->next()->prior()!=it.get_node()->impl())return false;
- if(it.get_node()->prior()->next()!=it.get_node()->impl())return false;
- }
- if(s!=size())return false;
- }
-
- return super::invariant_();
- }
-
- /* This forwarding function eases things for the boost::mem_fn construct
- * in BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT. Actually,
- * final_check_invariant is already an inherited member function of index.
- */
- void check_invariant_()const{this->final_check_invariant_();}
-#endif
-
-private:
- node_type* header()const{return this->final_header();}
-
- void empty_initialize()
- {
- header()->prior()=header()->next()=header()->impl();
- }
-
- void link(node_type* x)
- {
- node_impl_type::link(x->impl(),header()->impl());
- };
-
- static void unlink(node_type* x)
- {
- node_impl_type::unlink(x->impl());
- }
-
- static void relink(node_type* position,node_type* x)
- {
- node_impl_type::relink(position->impl(),x->impl());
- }
-
- static void relink(node_type* position,node_type* first,node_type* last)
- {
- node_impl_type::relink(
- position->impl(),first->impl(),last->impl());
- }
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- void rearranger(node_type* position,node_type *x)
- {
- if(!position)position=header();
- node_type::increment(position);
- if(position!=x)relink(position,x);
- }
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- void detach_iterators(node_type* x)
- {
- iterator it=make_iterator(x);
- safe_mode::detach_equivalent_iterators(it);
- }
-#endif
-
- template <class InputIterator>
- void assign_iter(InputIterator first,InputIterator last,mpl::true_)
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- clear();
- for(;first!=last;++first)push_back(*first);
- }
-
- void assign_iter(size_type n,value_param_type value,mpl::false_)
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- clear();
- for(size_type i=0;i<n;++i)push_back(value);
- }
-
- template<typename InputIterator>
- void insert_iter(
- iterator position,InputIterator first,InputIterator last,mpl::true_)
- {
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- for(;first!=last;++first)insert(position,*first);
- }
-
- void insert_iter(
- iterator position,size_type n,value_param_type x,mpl::false_)
- {
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(position);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(position,*this);
- BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT;
- for(size_type i=0;i<n;++i)insert(position,x);
- }
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
- BOOST_WORKAROUND(__MWERKS__,<=0x3003)
-#pragma parse_mfunc_templ reset
-#endif
-};
-
-/* comparison */
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator==(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y)
-{
- return x.size()==y.size()&&std::equal(x.begin(),x.end(),y.begin());
-}
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator<(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y)
-{
- return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
-}
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator!=(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y)
-{
- return !(x==y);
-}
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator>(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y)
-{
- return y<x;
-}
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator>=(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y)
-{
- return !(x<y);
-}
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator<=(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y)
-{
- return !(x>y);
-}
-
-/* specialized algorithms */
-
-template<typename SuperMeta,typename TagList>
-void swap(
- sequenced_index<SuperMeta,TagList>& x,
- sequenced_index<SuperMeta,TagList>& y)
-{
- x.swap(y);
-}
-
-} /* namespace multi_index::detail */
-
-/* sequenced index specifier */
-
-template <typename TagList>
-struct sequenced
-{
- BOOST_STATIC_ASSERT(detail::is_tag<TagList>::value);
-
- template<typename Super>
- struct node_class
- {
- typedef detail::sequenced_index_node<Super> type;
- };
-
- template<typename SuperMeta>
- struct index_class
- {
- typedef detail::sequenced_index<SuperMeta,typename TagList::type> type;
- };
-};
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#undef BOOST_MULTI_INDEX_SEQ_INDEX_CHECK_INVARIANT
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/sequenced_index_fwd.hpp b/3rdParty/Boost/src/boost/multi_index/sequenced_index_fwd.hpp
deleted file mode 100644
index 5211390..0000000
--- a/3rdParty/Boost/src/boost/multi_index/sequenced_index_fwd.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_SEQUENCED_INDEX_FWD_HPP
-#define BOOST_MULTI_INDEX_SEQUENCED_INDEX_FWD_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/multi_index/tag.hpp>
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-template<typename SuperMeta,typename TagList>
-class sequenced_index;
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator==(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y);
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator<(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y);
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator!=(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y);
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator>(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y);
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator>=(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y);
-
-template<
- typename SuperMeta1,typename TagList1,
- typename SuperMeta2,typename TagList2
->
-bool operator<=(
- const sequenced_index<SuperMeta1,TagList1>& x,
- const sequenced_index<SuperMeta2,TagList2>& y);
-
-template<typename SuperMeta,typename TagList>
-void swap(
- sequenced_index<SuperMeta,TagList>& x,
- sequenced_index<SuperMeta,TagList>& y);
-
-} /* namespace multi_index::detail */
-
-/* index specifiers */
-
-template <typename TagList=tag<> >
-struct sequenced;
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index/tag.hpp b/3rdParty/Boost/src/boost/multi_index/tag.hpp
deleted file mode 100644
index ba7cab4..0000000
--- a/3rdParty/Boost/src/boost/multi_index/tag.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_TAG_HPP
-#define BOOST_MULTI_INDEX_TAG_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/multi_index/detail/no_duplicate_tags.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/transform.hpp>
-#include <boost/mpl/vector.hpp>
-#include <boost/preprocessor/facilities/intercept.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_base_and_derived.hpp>
-
-/* A wrapper of mpl::vector used to hide MPL from the user.
- * tag contains types used as tag names for indices in get() functions.
- */
-
-/* This user_definable macro limits the number of elements of a tag;
- * useful for shortening resulting symbol names (MSVC++ 6.0, for instance,
- * has problems coping with very long symbol names.)
- */
-
-#if !defined(BOOST_MULTI_INDEX_LIMIT_TAG_SIZE)
-#if defined(BOOST_MSVC)&&(BOOST_MSVC<1300)
-#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE 3
-#else
-#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
-#endif
-#endif
-
-#if BOOST_MULTI_INDEX_LIMIT_TAG_SIZE<BOOST_MPL_LIMIT_VECTOR_SIZE
-#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MULTI_INDEX_LIMIT_TAG_SIZE
-#else
-#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-namespace detail{
-
-struct tag_marker{};
-
-template<typename T>
-struct is_tag
-{
- BOOST_STATIC_CONSTANT(bool,value=(is_base_and_derived<tag_marker,T>::value));
-};
-
-} /* namespace multi_index::detail */
-
-template<
- BOOST_PP_ENUM_BINARY_PARAMS(
- BOOST_MULTI_INDEX_TAG_SIZE,
- typename T,
- =mpl::na BOOST_PP_INTERCEPT)
->
-struct tag:private detail::tag_marker
-{
- /* The mpl::transform pass produces shorter symbols (without
- * trailing mpl::na's.)
- */
-
- typedef typename mpl::transform<
- mpl::vector<BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_TAG_SIZE,T)>,
- mpl::identity<mpl::_1>
- >::type type;
-
- BOOST_STATIC_ASSERT(detail::no_duplicate_tags<type>::value);
-};
-
-} /* namespace multi_index */
-
-} /* namespace boost */
-
-#undef BOOST_MULTI_INDEX_TAG_SIZE
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index_container.hpp b/3rdParty/Boost/src/boost/multi_index_container.hpp
deleted file mode 100644
index e1969b9..0000000
--- a/3rdParty/Boost/src/boost/multi_index_container.hpp
+++ /dev/null
@@ -1,1143 +0,0 @@
-/* Multiply indexed container.
- *
- * Copyright 2003-2010 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_HPP
-#define BOOST_MULTI_INDEX_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <algorithm>
-#include <boost/detail/allocator_utilities.hpp>
-#include <boost/detail/no_exceptions_support.hpp>
-#include <boost/detail/workaround.hpp>
-#include <boost/mpl/at.hpp>
-#include <boost/mpl/contains.hpp>
-#include <boost/mpl/find_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/size.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/multi_index_container_fwd.hpp>
-#include <boost/multi_index/detail/access_specifier.hpp>
-#include <boost/multi_index/detail/adl_swap.hpp>
-#include <boost/multi_index/detail/base_type.hpp>
-#include <boost/multi_index/detail/converter.hpp>
-#include <boost/multi_index/detail/header_holder.hpp>
-#include <boost/multi_index/detail/has_tag.hpp>
-#include <boost/multi_index/detail/no_duplicate_tags.hpp>
-#include <boost/multi_index/detail/prevent_eti.hpp>
-#include <boost/multi_index/detail/safe_mode.hpp>
-#include <boost/multi_index/detail/scope_guard.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/utility/base_from_member.hpp>
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
-#include <boost/multi_index/detail/archive_constructed.hpp>
-#include <boost/multi_index/detail/serialization_version.hpp>
-#include <boost/serialization/collection_size_type.hpp>
-#include <boost/serialization/nvp.hpp>
-#include <boost/serialization/split_member.hpp>
-#include <boost/serialization/version.hpp>
-#include <boost/throw_exception.hpp>
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
-#include <boost/multi_index/detail/invariant_assert.hpp>
-#define BOOST_MULTI_INDEX_CHECK_INVARIANT \
- detail::scope_guard BOOST_JOIN(check_invariant_,__LINE__)= \
- detail::make_obj_guard(*this,&multi_index_container::check_invariant_); \
- BOOST_JOIN(check_invariant_,__LINE__).touch();
-#else
-#define BOOST_MULTI_INDEX_CHECK_INVARIANT
-#endif
-
-namespace boost{
-
-namespace multi_index{
-
-template<typename Value,typename IndexSpecifierList,typename Allocator>
-class multi_index_container:
- private ::boost::base_from_member<
- typename boost::detail::allocator::rebind_to<
- Allocator,
- typename detail::multi_index_node_type<
- Value,IndexSpecifierList,Allocator>::type
- >::type>,
- BOOST_MULTI_INDEX_PRIVATE_IF_MEMBER_TEMPLATE_FRIENDS detail::header_holder<
- typename detail::prevent_eti<
- Allocator,
- typename boost::detail::allocator::rebind_to<
- Allocator,
- typename detail::multi_index_node_type<
- Value,IndexSpecifierList,Allocator>::type
- >::type
- >::type::pointer,
- multi_index_container<Value,IndexSpecifierList,Allocator> >,
- public detail::multi_index_base_type<
- Value,IndexSpecifierList,Allocator>::type
-{
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
- BOOST_WORKAROUND(__MWERKS__,<=0x3003)
-/* The "ISO C++ Template Parser" option in CW8.3 has a problem with the
- * lifetime of const references bound to temporaries --precisely what
- * scopeguards are.
- */
-
-#pragma parse_mfunc_templ off
-#endif
-
-private:
-#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
- template <typename,typename,typename> friend class detail::index_base;
- template <typename,typename> friend struct detail::header_holder;
- template <typename,typename> friend struct detail::converter;
-#endif
-
- typedef typename detail::multi_index_base_type<
- Value,IndexSpecifierList,Allocator>::type super;
- typedef typename
- boost::detail::allocator::rebind_to<
- Allocator,
- typename super::node_type
- >::type node_allocator;
- typedef ::boost::base_from_member<
- node_allocator> bfm_allocator;
- typedef detail::header_holder<
- typename detail::prevent_eti<
- Allocator,
- node_allocator
- >::type::pointer,
- multi_index_container> bfm_header;
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- /* see definition of index_type_list below */
- typedef typename super::index_type_list super_index_type_list;
-#endif
-
-public:
- /* All types are inherited from super, a few are explicitly
- * brought forward here to save us some typename's.
- */
-
- typedef typename super::ctor_args_list ctor_args_list;
- typedef IndexSpecifierList index_specifier_type_list;
-
-#if BOOST_WORKAROUND(BOOST_MSVC,<1300)
- /* MSVC++ 6.0 chokes on moderately long index lists (around 6 indices
- * or more), with errors ranging from corrupt exes to duplicate
- * comdats. The following type hiding hack alleviates this condition;
- * best results combined with type hiding of the indexed_by construct
- * itself, as explained in the "Compiler specifics" section of
- * the documentation.
- */
-
- struct index_type_list:super_index_type_list
- {
- typedef index_type_list type;
- typedef typename super_index_type_list::back back;
- typedef mpl::v_iter<type,0> begin;
- typedef mpl::v_iter<
- type,
- mpl::size<super_index_type_list>::value> end;
- };
-#else
- typedef typename super::index_type_list index_type_list;
-#endif
-
- typedef typename super::iterator_type_list iterator_type_list;
- typedef typename super::const_iterator_type_list const_iterator_type_list;
- typedef typename super::value_type value_type;
- typedef typename super::final_allocator_type allocator_type;
- typedef typename super::iterator iterator;
- typedef typename super::const_iterator const_iterator;
-
- BOOST_STATIC_ASSERT(
- detail::no_duplicate_tags_in_index_list<index_type_list>::value);
-
- /* global project() needs to see this publicly */
-
- typedef typename super::node_type node_type;
-
- /* construct/copy/destroy */
-
- explicit multi_index_container(
-
-#if BOOST_WORKAROUND(__IBMCPP__,<=600)
- /* VisualAge seems to have an ETI issue with the default values
- * for arguments args_list and al.
- */
-
- const ctor_args_list& args_list=
- typename mpl::identity<multi_index_container>::type::
- ctor_args_list(),
- const allocator_type& al=
- typename mpl::identity<multi_index_container>::type::
- allocator_type()):
-#else
- const ctor_args_list& args_list=ctor_args_list(),
- const allocator_type& al=allocator_type()):
-#endif
-
- bfm_allocator(al),
- super(args_list,bfm_allocator::member),
- node_count(0)
- {
- BOOST_MULTI_INDEX_CHECK_INVARIANT;
- }
-
- explicit multi_index_container(const allocator_type& al):
- bfm_allocator(al),
- super(ctor_args_list(),bfm_allocator::member),
- node_count(0)
- {
- BOOST_MULTI_INDEX_CHECK_INVARIANT;
- }
-
- template<typename InputIterator>
- multi_index_container(
- InputIterator first,InputIterator last,
-
-#if BOOST_WORKAROUND(__IBMCPP__,<=600)
- /* VisualAge seems to have an ETI issue with the default values
- * for arguments args_list and al.
- */
-
- const ctor_args_list& args_list=
- typename mpl::identity<multi_index_container>::type::
- ctor_args_list(),
- const allocator_type& al=
- typename mpl::identity<multi_index_container>::type::
- allocator_type()):
-#else
- const ctor_args_list& args_list=ctor_args_list(),
- const allocator_type& al=allocator_type()):
-#endif
-
- bfm_allocator(al),
- super(args_list,bfm_allocator::member),
- node_count(0)
- {
- BOOST_MULTI_INDEX_CHECK_INVARIANT;
- BOOST_TRY{
- iterator hint=super::end();
- for(;first!=last;++first){
- hint=super::make_iterator(insert_(*first,hint.get_node()).first);
- }
- }
- BOOST_CATCH(...){
- clear_();
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- multi_index_container(
- const multi_index_container<Value,IndexSpecifierList,Allocator>& x):
- bfm_allocator(x.bfm_allocator::member),
- bfm_header(),
- super(x),
- node_count(0)
- {
- copy_map_type map(bfm_allocator::member,x.size(),x.header(),header());
- for(const_iterator it=x.begin(),it_end=x.end();it!=it_end;++it){
- map.clone(it.get_node());
- }
- super::copy_(x,map);
- map.release();
- node_count=x.size();
-
- /* Not until this point are the indices required to be consistent,
- * hence the position of the invariant checker.
- */
-
- BOOST_MULTI_INDEX_CHECK_INVARIANT;
- }
-
- ~multi_index_container()
- {
- delete_all_nodes_();
- }
-
- multi_index_container<Value,IndexSpecifierList,Allocator>& operator=(
- multi_index_container<Value,IndexSpecifierList,Allocator> x)
- {
- BOOST_MULTI_INDEX_CHECK_INVARIANT;
- this->swap(x);
- return *this;
- }
-
- allocator_type get_allocator()const
- {
- return allocator_type(bfm_allocator::member);
- }
-
- /* retrieval of indices by number */
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATES)
- template<int N>
- struct nth_index
- {
- BOOST_STATIC_ASSERT(N>=0&&N<mpl::size<index_type_list>::type::value);
- typedef typename mpl::at_c<index_type_list,N>::type type;
- };
-
- template<int N>
- typename nth_index<N>::type& get(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int,N))
- {
- BOOST_STATIC_ASSERT(N>=0&&N<mpl::size<index_type_list>::type::value);
- return *this;
- }
-
- template<int N>
- const typename nth_index<N>::type& get(
- BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int,N))const
- {
- BOOST_STATIC_ASSERT(N>=0&&N<mpl::size<index_type_list>::type::value);
- return *this;
- }
-#endif
-
- /* retrieval of indices by tag */
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATES)
- template<typename Tag>
- struct index
- {
- typedef typename mpl::find_if<
- index_type_list,
- detail::has_tag<Tag>
- >::type iter;
-
- BOOST_STATIC_CONSTANT(
- bool,index_found=!(is_same<iter,typename mpl::end<index_type_list>::type >::value));
- BOOST_STATIC_ASSERT(index_found);
-
- typedef typename mpl::deref<iter>::type type;
- };
-
- template<typename Tag>
- typename index<Tag>::type& get(BOOST_EXPLICIT_TEMPLATE_TYPE(Tag))
- {
- return *this;
- }
-
- template<typename Tag>
- const typename index<Tag>::type& get(
- BOOST_EXPLICIT_TEMPLATE_TYPE(Tag))const
- {
- return *this;
- }
-#endif
-
- /* projection of iterators by number */
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATES)
- template<int N>
- struct nth_index_iterator
- {
- typedef typename nth_index<N>::type::iterator type;
- };
-
- template<int N>
- struct nth_index_const_iterator
- {
- typedef typename nth_index<N>::type::const_iterator type;
- };
-
- template<int N,typename IteratorType>
- typename nth_index_iterator<N>::type project(
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N))
- {
- typedef typename nth_index<N>::type index;
-
-#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */
- BOOST_STATIC_ASSERT(
- (mpl::contains<iterator_type_list,IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(
- it,static_cast<typename IteratorType::container_type&>(*this));
-
- return index::make_iterator(static_cast<node_type*>(it.get_node()));
- }
-
- template<int N,typename IteratorType>
- typename nth_index_const_iterator<N>::type project(
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N))const
- {
- typedef typename nth_index<N>::type index;
-
-#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */
- BOOST_STATIC_ASSERT((
- mpl::contains<iterator_type_list,IteratorType>::value||
- mpl::contains<const_iterator_type_list,IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(
- it,static_cast<const typename IteratorType::container_type&>(*this));
- return index::make_iterator(static_cast<node_type*>(it.get_node()));
- }
-#endif
-
- /* projection of iterators by tag */
-
-#if !defined(BOOST_NO_MEMBER_TEMPLATES)
- template<typename Tag>
- struct index_iterator
- {
- typedef typename index<Tag>::type::iterator type;
- };
-
- template<typename Tag>
- struct index_const_iterator
- {
- typedef typename index<Tag>::type::const_iterator type;
- };
-
- template<typename Tag,typename IteratorType>
- typename index_iterator<Tag>::type project(
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag))
- {
- typedef typename index<Tag>::type index;
-
-#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */
- BOOST_STATIC_ASSERT(
- (mpl::contains<iterator_type_list,IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(
- it,static_cast<typename IteratorType::container_type&>(*this));
- return index::make_iterator(static_cast<node_type*>(it.get_node()));
- }
-
- template<typename Tag,typename IteratorType>
- typename index_const_iterator<Tag>::type project(
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag))const
- {
- typedef typename index<Tag>::type index;
-
-#if !defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580) /* fails in Sun C++ 5.7 */
- BOOST_STATIC_ASSERT((
- mpl::contains<iterator_type_list,IteratorType>::value||
- mpl::contains<const_iterator_type_list,IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(
- it,static_cast<const typename IteratorType::container_type&>(*this));
- return index::make_iterator(static_cast<node_type*>(it.get_node()));
- }
-#endif
-
-BOOST_MULTI_INDEX_PROTECTED_IF_MEMBER_TEMPLATE_FRIENDS:
- typedef typename super::copy_map_type copy_map_type;
-
- node_type* header()const
- {
- return &*bfm_header::member;
- }
-
- node_type* allocate_node()
- {
- return &*bfm_allocator::member.allocate(1);
- }
-
- void deallocate_node(node_type* x)
- {
- typedef typename node_allocator::pointer node_pointer;
- bfm_allocator::member.deallocate(static_cast<node_pointer>(x),1);
- }
-
- bool empty_()const
- {
- return node_count==0;
- }
-
- std::size_t size_()const
- {
- return node_count;
- }
-
- std::size_t max_size_()const
- {
- return static_cast<std::size_t >(-1);
- }
-
- std::pair<node_type*,bool> insert_(const Value& v)
- {
- node_type* x=allocate_node();
- BOOST_TRY{
- node_type* res=super::insert_(v,x);
- if(res==x){
- ++node_count;
- return std::pair<node_type*,bool>(res,true);
- }
- else{
- deallocate_node(x);
- return std::pair<node_type*,bool>(res,false);
- }
- }
- BOOST_CATCH(...){
- deallocate_node(x);
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- std::pair<node_type*,bool> insert_(const Value& v,node_type* position)
- {
- node_type* x=allocate_node();
- BOOST_TRY{
- node_type* res=super::insert_(v,position,x);
- if(res==x){
- ++node_count;
- return std::pair<node_type*,bool>(res,true);
- }
- else{
- deallocate_node(x);
- return std::pair<node_type*,bool>(res,false);
- }
- }
- BOOST_CATCH(...){
- deallocate_node(x);
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- void erase_(node_type* x)
- {
- --node_count;
- super::erase_(x);
- deallocate_node(x);
- }
-
- void delete_node_(node_type* x)
- {
- super::delete_node_(x);
- deallocate_node(x);
- }
-
- void delete_all_nodes_()
- {
- super::delete_all_nodes_();
- }
-
- void clear_()
- {
- delete_all_nodes_();
- super::clear_();
- node_count=0;
- }
-
- void swap_(multi_index_container<Value,IndexSpecifierList,Allocator>& x)
- {
- if(bfm_allocator::member!=x.bfm_allocator::member){
- detail::adl_swap(bfm_allocator::member,x.bfm_allocator::member);
- }
- std::swap(bfm_header::member,x.bfm_header::member);
- super::swap_(x);
- std::swap(node_count,x.node_count);
- }
-
- bool replace_(const Value& k,node_type* x)
- {
- return super::replace_(k,x);
- }
-
- template<typename Modifier>
- bool modify_(Modifier& mod,node_type* x)
- {
- mod(const_cast<value_type&>(x->value()));
-
- BOOST_TRY{
- if(!super::modify_(x)){
- deallocate_node(x);
- --node_count;
- return false;
- }
- else return true;
- }
- BOOST_CATCH(...){
- deallocate_node(x);
- --node_count;
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
- template<typename Modifier,typename Rollback>
- bool modify_(Modifier& mod,Rollback& back,node_type* x)
- {
- mod(const_cast<value_type&>(x->value()));
-
- bool b;
- BOOST_TRY{
- b=super::modify_rollback_(x);
- }
- BOOST_CATCH(...){
- BOOST_TRY{
- back(const_cast<value_type&>(x->value()));
- BOOST_RETHROW;
- }
- BOOST_CATCH(...){
- this->erase_(x);
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
- BOOST_CATCH_END
-
- BOOST_TRY{
- if(!b){
- back(const_cast<value_type&>(x->value()));
- return false;
- }
- else return true;
- }
- BOOST_CATCH(...){
- this->erase_(x);
- BOOST_RETHROW;
- }
- BOOST_CATCH_END
- }
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)
- /* serialization */
-
- friend class boost::serialization::access;
-
- BOOST_SERIALIZATION_SPLIT_MEMBER()
-
- typedef typename super::index_saver_type index_saver_type;
- typedef typename super::index_loader_type index_loader_type;
-
- template<class Archive>
- void save(Archive& ar,const unsigned int version)const
- {
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- const serialization::collection_size_type s(size_());
- const detail::serialization_version<value_type> value_version;
- ar<<serialization::make_nvp("count",s);
- ar<<serialization::make_nvp("value_version",value_version);
-#else
- const std::size_t s=size_();
- const unsigned int value_version=0;
- ar<<serialization::make_nvp("count",s);
-#endif
-
- index_saver_type sm(bfm_allocator::member,s);
-
- for(iterator it=super::begin(),it_end=super::end();it!=it_end;++it){
- serialization::save_construct_data_adl(ar,&*it,value_version);
- ar<<serialization::make_nvp("item",*it);
- sm.add(it.get_node(),ar,version);
- }
- sm.add_track(header(),ar,version);
-
- super::save_(ar,version,sm);
- }
-
- template<class Archive>
- void load(Archive& ar,const unsigned int version)
- {
- BOOST_MULTI_INDEX_CHECK_INVARIANT;
-
- clear_();
-
-#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
- serialization::collection_size_type s;
- detail::serialization_version<value_type> value_version;
- if(version<1){
- std::size_t sz;
- ar>>serialization::make_nvp("count",sz);
- s=sz;
- }
- else{
- ar>>serialization::make_nvp("count",s);
- }
- if(version<2){
- value_version=0;
- }
- else{
- ar>>serialization::make_nvp("value_version",value_version);
- }
-#else
- std::size_t s;
- unsigned int value_version=0;
- ar>>serialization::make_nvp("count",s);
-#endif
-
- index_loader_type lm(bfm_allocator::member,s);
-
- for(std::size_t n=0;n<s;++n){
- detail::archive_constructed<Value> value("item",ar,value_version);
- std::pair<node_type*,bool> p=insert_(
- value.get(),super::end().get_node());
- if(!p.second)throw_exception(
- archive::archive_exception(
- archive::archive_exception::other_exception));
- ar.reset_object_address(&p.first->value(),&value.get());
- lm.add(p.first,ar,version);
- }
- lm.add_track(header(),ar,version);
-
- super::load_(ar,version,lm);
- }
-#endif
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
- /* invariant stuff */
-
- bool invariant_()const
- {
- return super::invariant_();
- }
-
- void check_invariant_()const
- {
- BOOST_MULTI_INDEX_INVARIANT_ASSERT(invariant_());
- }
-#endif
-
-private:
- std::size_t node_count;
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)&&\
- BOOST_WORKAROUND(__MWERKS__,<=0x3003)
-#pragma parse_mfunc_templ reset
-#endif
-};
-
-/* retrieval of indices by number */
-
-template<typename MultiIndexContainer,int N>
-struct nth_index
-{
- BOOST_STATIC_CONSTANT(
- int,
- M=mpl::size<typename MultiIndexContainer::index_type_list>::type::value);
- BOOST_STATIC_ASSERT(N>=0&&N<M);
- typedef typename mpl::at_c<
- typename MultiIndexContainer::index_type_list,N>::type type;
-};
-
-template<int N,typename Value,typename IndexSpecifierList,typename Allocator>
-typename nth_index<
- multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type&
-get(
- multi_index_container<Value,IndexSpecifierList,Allocator>& m
- BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename nth_index<
- multi_index_container<
- Value,IndexSpecifierList,Allocator>,
- N
- >::type index;
-
- BOOST_STATIC_ASSERT(N>=0&&
- N<
- mpl::size<
- BOOST_DEDUCED_TYPENAME multi_index_type::index_type_list
- >::type::value);
-
- return detail::converter<multi_index_type,index>::index(m);
-}
-
-template<int N,typename Value,typename IndexSpecifierList,typename Allocator>
-const typename nth_index<
- multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type&
-get(
- const multi_index_container<Value,IndexSpecifierList,Allocator>& m
- BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename nth_index<
- multi_index_container<
- Value,IndexSpecifierList,Allocator>,
- N
- >::type index;
-
- BOOST_STATIC_ASSERT(N>=0&&
- N<
- mpl::size<
- BOOST_DEDUCED_TYPENAME multi_index_type::index_type_list
- >::type::value);
-
- return detail::converter<multi_index_type,index>::index(m);
-}
-
-/* retrieval of indices by tag */
-
-template<typename MultiIndexContainer,typename Tag>
-struct index
-{
- typedef typename MultiIndexContainer::index_type_list index_type_list;
-
- typedef typename mpl::find_if<
- index_type_list,
- detail::has_tag<Tag>
- >::type iter;
-
- BOOST_STATIC_CONSTANT(
- bool,index_found=!(is_same<iter,typename mpl::end<index_type_list>::type >::value));
- BOOST_STATIC_ASSERT(index_found);
-
- typedef typename mpl::deref<iter>::type type;
-};
-
-template<
- typename Tag,typename Value,typename IndexSpecifierList,typename Allocator
->
-typename ::boost::multi_index::index<
- multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type&
-get(
- multi_index_container<Value,IndexSpecifierList,Allocator>& m
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename ::boost::multi_index::index<
- multi_index_container<
- Value,IndexSpecifierList,Allocator>,
- Tag
- >::type index;
-
- return detail::converter<multi_index_type,index>::index(m);
-}
-
-template<
- typename Tag,typename Value,typename IndexSpecifierList,typename Allocator
->
-const typename ::boost::multi_index::index<
- multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type&
-get(
- const multi_index_container<Value,IndexSpecifierList,Allocator>& m
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename ::boost::multi_index::index<
- multi_index_container<
- Value,IndexSpecifierList,Allocator>,
- Tag
- >::type index;
-
- return detail::converter<multi_index_type,index>::index(m);
-}
-
-/* projection of iterators by number */
-
-template<typename MultiIndexContainer,int N>
-struct nth_index_iterator
-{
- typedef typename detail::prevent_eti<
- nth_index<MultiIndexContainer,N>,
- typename nth_index<MultiIndexContainer,N>::type>::type::iterator type;
-};
-
-template<typename MultiIndexContainer,int N>
-struct nth_index_const_iterator
-{
- typedef typename detail::prevent_eti<
- nth_index<MultiIndexContainer,N>,
- typename nth_index<MultiIndexContainer,N>::type
- >::type::const_iterator type;
-};
-
-template<
- int N,typename IteratorType,
- typename Value,typename IndexSpecifierList,typename Allocator>
-typename nth_index_iterator<
- multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type
-project(
- multi_index_container<Value,IndexSpecifierList,Allocator>& m,
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename nth_index<multi_index_type,N>::type index;
-
-#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\
- (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */
- BOOST_STATIC_ASSERT((
- mpl::contains<
- BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list,
- IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- typedef detail::converter<
- multi_index_type,
- BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter;
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m));
-#endif
-
- return detail::converter<multi_index_type,index>::iterator(
- m,static_cast<typename multi_index_type::node_type*>(it.get_node()));
-}
-
-template<
- int N,typename IteratorType,
- typename Value,typename IndexSpecifierList,typename Allocator>
-typename nth_index_const_iterator<
- multi_index_container<Value,IndexSpecifierList,Allocator>,N>::type
-project(
- const multi_index_container<Value,IndexSpecifierList,Allocator>& m,
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int,N))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename nth_index<multi_index_type,N>::type index;
-
-#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\
- (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */
- BOOST_STATIC_ASSERT((
- mpl::contains<
- BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list,
- IteratorType>::value||
- mpl::contains<
- BOOST_DEDUCED_TYPENAME multi_index_type::const_iterator_type_list,
- IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- typedef detail::converter<
- multi_index_type,
- BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter;
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m));
-#endif
-
- return detail::converter<multi_index_type,index>::const_iterator(
- m,static_cast<typename multi_index_type::node_type*>(it.get_node()));
-}
-
-/* projection of iterators by tag */
-
-template<typename MultiIndexContainer,typename Tag>
-struct index_iterator
-{
- typedef typename ::boost::multi_index::index<
- MultiIndexContainer,Tag>::type::iterator type;
-};
-
-template<typename MultiIndexContainer,typename Tag>
-struct index_const_iterator
-{
- typedef typename ::boost::multi_index::index<
- MultiIndexContainer,Tag>::type::const_iterator type;
-};
-
-template<
- typename Tag,typename IteratorType,
- typename Value,typename IndexSpecifierList,typename Allocator>
-typename index_iterator<
- multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type
-project(
- multi_index_container<Value,IndexSpecifierList,Allocator>& m,
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename ::boost::multi_index::index<
- multi_index_type,Tag>::type index;
-
-#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\
- (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */
- BOOST_STATIC_ASSERT((
- mpl::contains<
- BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list,
- IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- typedef detail::converter<
- multi_index_type,
- BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter;
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m));
-#endif
-
- return detail::converter<multi_index_type,index>::iterator(
- m,static_cast<typename multi_index_type::node_type*>(it.get_node()));
-}
-
-template<
- typename Tag,typename IteratorType,
- typename Value,typename IndexSpecifierList,typename Allocator>
-typename index_const_iterator<
- multi_index_container<Value,IndexSpecifierList,Allocator>,Tag>::type
-project(
- const multi_index_container<Value,IndexSpecifierList,Allocator>& m,
- IteratorType it
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(Tag))
-{
- typedef multi_index_container<
- Value,IndexSpecifierList,Allocator> multi_index_type;
- typedef typename ::boost::multi_index::index<
- multi_index_type,Tag>::type index;
-
-#if (!defined(BOOST_MSVC)||!(BOOST_MSVC<1310))&& /* MSVC++ 6.0/7.0 fails */\
- (!defined(__SUNPRO_CC)||!(__SUNPRO_CC<0x580)) /* as does Sun C++ 5.7 */
- BOOST_STATIC_ASSERT((
- mpl::contains<
- BOOST_DEDUCED_TYPENAME multi_index_type::iterator_type_list,
- IteratorType>::value||
- mpl::contains<
- BOOST_DEDUCED_TYPENAME multi_index_type::const_iterator_type_list,
- IteratorType>::value));
-#endif
-
- BOOST_MULTI_INDEX_CHECK_VALID_ITERATOR(it);
-
-#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
- typedef detail::converter<
- multi_index_type,
- BOOST_DEDUCED_TYPENAME IteratorType::container_type> converter;
- BOOST_MULTI_INDEX_CHECK_IS_OWNER(it,converter::index(m));
-#endif
-
- return detail::converter<multi_index_type,index>::const_iterator(
- m,static_cast<typename multi_index_type::node_type*>(it.get_node()));
-}
-
-/* Comparison. Simple forward to first index. */
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator==(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y)
-{
- return get<0>(x)==get<0>(y);
-}
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator<(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y)
-{
- return get<0>(x)<get<0>(y);
-}
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator!=(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y)
-{
- return get<0>(x)!=get<0>(y);
-}
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator>(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y)
-{
- return get<0>(x)>get<0>(y);
-}
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator>=(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y)
-{
- return get<0>(x)>=get<0>(y);
-}
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator<=(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y)
-{
- return get<0>(x)<=get<0>(y);
-}
-
-/* specialized algorithms */
-
-template<typename Value,typename IndexSpecifierList,typename Allocator>
-void swap(
- multi_index_container<Value,IndexSpecifierList,Allocator>& x,
- multi_index_container<Value,IndexSpecifierList,Allocator>& y)
-{
- x.swap(y);
-}
-
-} /* namespace multi_index */
-
-#if !defined(BOOST_MULTI_INDEX_DISABLE_SERIALIZATION)&&\
- !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
-/* class version = 1 : we now serialize the size through
- * boost::serialization::collection_size_type.
- * class version = 2 : proper use of {save|load}_construct_data.
- */
-
-namespace serialization {
-template<typename Value,typename IndexSpecifierList,typename Allocator>
-struct version<
- boost::multi_index_container<Value,IndexSpecifierList,Allocator>
->
-{
- BOOST_STATIC_CONSTANT(int,value=2);
-};
-} /* namespace serialization */
-#endif
-
-/* Associated global functions are promoted to namespace boost, except
- * comparison operators and swap, which are meant to be Koenig looked-up.
- */
-
-using multi_index::get;
-using multi_index::project;
-
-} /* namespace boost */
-
-#undef BOOST_MULTI_INDEX_CHECK_INVARIANT
-
-#endif
diff --git a/3rdParty/Boost/src/boost/multi_index_container_fwd.hpp b/3rdParty/Boost/src/boost/multi_index_container_fwd.hpp
deleted file mode 100644
index 99e8db3..0000000
--- a/3rdParty/Boost/src/boost/multi_index_container_fwd.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/* Copyright 2003-2008 Joaquin M Lopez Munoz.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- *
- * See http://www.boost.org/libs/multi_index for library home page.
- */
-
-#ifndef BOOST_MULTI_INDEX_FWD_HPP
-#define BOOST_MULTI_INDEX_FWD_HPP
-
-#if defined(_MSC_VER)&&(_MSC_VER>=1200)
-#pragma once
-#endif
-
-#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
-#include <boost/multi_index/identity.hpp>
-#include <boost/multi_index/indexed_by.hpp>
-#include <boost/multi_index/ordered_index_fwd.hpp>
-#include <memory>
-
-namespace boost{
-
-namespace multi_index{
-
-/* Default value for IndexSpecifierList specifies a container
- * equivalent to std::set<Value>.
- */
-
-template<
- typename Value,
- typename IndexSpecifierList=indexed_by<ordered_unique<identity<Value> > >,
- typename Allocator=std::allocator<Value> >
-class multi_index_container;
-
-template<typename MultiIndexContainer,int N>
-struct nth_index;
-
-template<typename MultiIndexContainer,typename Tag>
-struct index;
-
-template<typename MultiIndexContainer,int N>
-struct nth_index_iterator;
-
-template<typename MultiIndexContainer,int N>
-struct nth_index_const_iterator;
-
-template<typename MultiIndexContainer,typename Tag>
-struct index_iterator;
-
-template<typename MultiIndexContainer,typename Tag>
-struct index_const_iterator;
-
-/* get and project functions not fwd declared due to problems
- * with dependent typenames
- */
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator==(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator<(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator!=(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator>(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator>=(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
-
-template<
- typename Value1,typename IndexSpecifierList1,typename Allocator1,
- typename Value2,typename IndexSpecifierList2,typename Allocator2
->
-bool operator<=(
- const multi_index_container<Value1,IndexSpecifierList1,Allocator1>& x,
- const multi_index_container<Value2,IndexSpecifierList2,Allocator2>& y);
-
-template<typename Value,typename IndexSpecifierList,typename Allocator>
-void swap(
- multi_index_container<Value,IndexSpecifierList,Allocator>& x,
- multi_index_container<Value,IndexSpecifierList,Allocator>& y);
-
-} /* namespace multi_index */
-
-/* multi_index_container, being the main type of this library, is promoted to
- * namespace boost.
- */
-
-using multi_index::multi_index_container;
-
-} /* namespace boost */
-
-#endif
diff --git a/3rdParty/Boost/src/boost/optional/optional.hpp b/3rdParty/Boost/src/boost/optional/optional.hpp
index 88041d1..ec9006e 100644
--- a/3rdParty/Boost/src/boost/optional/optional.hpp
+++ b/3rdParty/Boost/src/boost/optional/optional.hpp
@@ -1,4 +1,4 @@
-// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
//
// Use, modification, and distribution is subject to the Boost Software
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
@@ -9,27 +9,34 @@
// You are welcome to contact the author at:
// fernando_cacciola@hotmail.com
//
+// Revisions:
+// 27 Apr 2008 (improved swap) Fernando Cacciola, Niels Dekker, Thorsten Ottosen
+//
#ifndef BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
#define BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
-#include<new>
-#include<algorithm>
-
-#include "boost/config.hpp"
-#include "boost/assert.hpp"
-#include "boost/type.hpp"
-#include "boost/type_traits/alignment_of.hpp"
-#include "boost/type_traits/type_with_alignment.hpp"
-#include "boost/type_traits/remove_reference.hpp"
-#include "boost/type_traits/is_reference.hpp"
-#include "boost/mpl/if.hpp"
-#include "boost/mpl/bool.hpp"
-#include "boost/mpl/not.hpp"
-#include "boost/detail/reference_content.hpp"
-#include "boost/none.hpp"
-#include "boost/utility/compare_pointees.hpp"
-
-#include "boost/optional/optional_fwd.hpp"
+#include <new>
+#include <algorithm>
+
+#include <boost/config.hpp>
+#include <boost/assert.hpp>
+#include <boost/type.hpp>
+#include <boost/type_traits/alignment_of.hpp>
+#include <boost/type_traits/has_nothrow_constructor.hpp>
+#include <boost/type_traits/type_with_alignment.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_reference.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/detail/reference_content.hpp>
+#include <boost/none.hpp>
+#include <boost/utility/swap.hpp>
+#include <boost/utility/addressof.hpp>
+#include <boost/utility/compare_pointees.hpp>
+#include <boost/utility/in_place_factory.hpp>
+
+#include <boost/optional/optional_fwd.hpp>
#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
// VC6.0 has the following bug:
@@ -76,6 +83,15 @@
#define BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
#endif
+#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) > 302 \
+ && !defined(__INTEL_COMPILER)
+// GCC since 3.3 has may_alias attribute that helps to alleviate optimizer issues with
+// regard to violation of the strict aliasing rules. The optional< T > storage type is marked
+// with this attribute in order to let the compiler know that it will alias objects of type T
+// and silence compilation warnings.
+#define BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS
+#endif
+
// Daniel Wallin discovered that bind/apply.hpp badly interacts with the apply<>
// member template of a factory as used in the optional<> implementation.
// He proposed this simple fix which is to move the call to apply<> outside
@@ -83,7 +99,7 @@
namespace boost_optional_detail
{
template <class T, class Factory>
- void construct(Factory const& factory, void* address)
+ inline void construct(Factory const& factory, void* address)
{
factory.BOOST_NESTED_TEMPLATE apply<T>(address);
}
@@ -95,6 +111,9 @@ namespace boost {
class in_place_factory_base ;
class typed_in_place_factory_base ;
+// This forward is needed to refer to namespace scope swap from the member swap
+template<class T> void swap ( optional<T>& x, optional<T>& y );
+
namespace optional_detail {
// This local class is used instead of that in "aligned_storage.hpp"
@@ -105,7 +124,12 @@ template <class T>
class aligned_storage
{
// Borland ICEs if unnamed unions are used for this!
- union dummy_u
+ union
+ // This works around GCC warnings about breaking strict aliasing rules when casting storage address to T*
+#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS)
+ __attribute__((may_alias))
+#endif
+ dummy_u
{
char data[ sizeof(T) ];
BOOST_DEDUCED_TYPENAME type_with_alignment<
@@ -114,8 +138,13 @@ class aligned_storage
public:
- void const* address() const { return &dummy_.data[0]; }
- void * address() { return &dummy_.data[0]; }
+#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS)
+ void const* address() const { return &dummy_; }
+ void * address() { return &dummy_; }
+#else
+ void const* address() const { return dummy_.data; }
+ void * address() { return dummy_.data; }
+#endif
} ;
template<class T>
@@ -149,7 +178,7 @@ class optional_base : public optional_tag
typedef
#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
BOOST_DEDUCED_TYPENAME
-#endif
+#endif
::boost::detail::make_reference_content<T>::type internal_type ;
typedef aligned_storage<internal_type> storage_type ;
@@ -200,7 +229,7 @@ class optional_base : public optional_tag
{
construct(val);
}
-
+
// Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialzed optional<T>.
// Can throw if T::T(T const&) does
optional_base ( bool cond, argument_type val )
@@ -421,8 +450,22 @@ class optional_base : public optional_tag
private :
// internal_type can be either T or reference_content<T>
+#if defined(BOOST_OPTIONAL_DETAIL_USE_ATTRIBUTE_MAY_ALIAS)
+ // This workaround is supposed to silence GCC warnings about broken strict aliasing rules
+ internal_type const* get_object() const
+ {
+ union { void const* ap_pvoid; internal_type const* as_ptype; } caster = { m_storage.address() };
+ return caster.as_ptype;
+ }
+ internal_type * get_object()
+ {
+ union { void* ap_pvoid; internal_type* as_ptype; } caster = { m_storage.address() };
+ return caster.as_ptype;
+ }
+#else
internal_type const* get_object() const { return static_cast<internal_type const*>(m_storage.address()); }
internal_type * get_object() { return static_cast<internal_type *> (m_storage.address()); }
+#endif
// reference_content<T> lacks an implicit conversion to T&, so the following is needed to obtain a proper reference.
reference_const_type dereference( internal_type const* p, is_not_reference_tag ) const { return *p ; }
@@ -513,12 +556,12 @@ class optional : public optional_detail::optional_base<T>
// Depending on the above some T ctor is called.
// Can throw is the resolved T ctor throws.
template<class Expr>
- explicit optional ( Expr const& expr ) : base(expr,&expr) {}
+ explicit optional ( Expr const& expr ) : base(expr,boost::addressof(expr)) {}
#endif
// Creates a deep copy of another optional<T>
// Can throw if T::T(T const&) does
- optional ( optional const& rhs ) : base(rhs) {}
+ optional ( optional const& rhs ) : base( static_cast<base const&>(rhs) ) {}
// No-throw (assuming T::~T() doesn't)
~optional() {}
@@ -527,9 +570,9 @@ class optional : public optional_detail::optional_base<T>
// Assigns from an expression. See corresponding constructor.
// Basic Guarantee: If the resolved T ctor throws, this is left UNINITIALIZED
template<class Expr>
- optional& operator= ( Expr expr )
+ optional& operator= ( Expr const& expr )
{
- this->assign_expr(expr,&expr);
+ this->assign_expr(expr,boost::addressof(expr));
return *this ;
}
#endif
@@ -552,7 +595,7 @@ class optional : public optional_detail::optional_base<T>
// (NOTE: On BCB, this operator is not actually called and left is left UNMODIFIED in case of a throw)
optional& operator= ( optional const& rhs )
{
- this->assign( rhs ) ;
+ this->assign( static_cast<base const&>(rhs) ) ;
return *this ;
}
@@ -573,6 +616,14 @@ class optional : public optional_detail::optional_base<T>
return *this ;
}
+ void swap( optional & arg )
+ {
+ // allow for Koenig lookup
+ using boost::swap;
+ swap(*this, arg);
+ }
+
+
// Returns a reference to the value if this is initialized, otherwise,
// the behaviour is UNDEFINED
// No-throw
@@ -582,7 +633,7 @@ class optional : public optional_detail::optional_base<T>
// Returns a copy of the value if this is initialized, 'v' otherwise
reference_const_type get_value_or ( reference_const_type v ) const { return this->is_initialized() ? get() : v ; }
reference_type get_value_or ( reference_type v ) { return this->is_initialized() ? get() : v ; }
-
+
// Returns a pointer to the value if this is initialized, otherwise,
// the behaviour is UNDEFINED
// No-throw
@@ -599,22 +650,22 @@ class optional : public optional_detail::optional_base<T>
// No-throw
operator unspecified_bool_type() const { return this->safe_bool() ; }
- // This is provided for those compilers which don't like the conversion to bool
- // on some contexts.
- bool operator!() const { return !this->is_initialized() ; }
+ // This is provided for those compilers which don't like the conversion to bool
+ // on some contexts.
+ bool operator!() const { return !this->is_initialized() ; }
} ;
// Returns optional<T>(v)
-template<class T>
-inline
+template<class T>
+inline
optional<T> make_optional ( T const& v )
{
return optional<T>(v);
}
// Returns optional<T>(cond,v)
-template<class T>
-inline
+template<class T>
+inline
optional<T> make_optional ( bool cond, T const& v )
{
return optional<T>(cond,v);
@@ -867,58 +918,74 @@ inline
bool operator >= ( none_t x, optional<T> const& y )
{ return !( x < y ) ; }
-//
-// The following swap implementation follows the GCC workaround as found in
-// "boost/detail/compressed_pair.hpp"
-//
namespace optional_detail {
-// GCC < 3.2 gets the using declaration at namespace scope (FLC, DWA)
-#if BOOST_WORKAROUND(__GNUC__, < 3) \
- || BOOST_WORKAROUND(__GNUC__, == 3) && __GNUC_MINOR__ <= 2
- using std::swap;
-#define BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
-#endif
+template<bool use_default_constructor> struct swap_selector;
-// optional's swap:
-// If both are initialized, calls swap(T&, T&). If this swap throws, both will remain initialized but their values are now unspecified.
-// If only one is initialized, calls U.reset(*I), THEN I.reset().
-// If U.reset(*I) throws, both are left UNCHANGED (U is kept uinitialized and I is never reset)
-// If both are uninitialized, do nothing (no-throw)
-template<class T>
-inline
-void optional_swap ( optional<T>& x, optional<T>& y )
+template<>
+struct swap_selector<true>
{
- if ( !x && !!y )
- {
- x.reset(*y);
- y.reset();
- }
- else if ( !!x && !y )
- {
- y.reset(*x);
- x.reset();
- }
- else if ( !!x && !!y )
- {
-// GCC > 3.2 and all other compilers have the using declaration at function scope (FLC)
-#ifndef BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
- // allow for Koenig lookup
- using std::swap ;
-#endif
- swap(*x,*y);
- }
-}
+ template<class T>
+ static void optional_swap ( optional<T>& x, optional<T>& y )
+ {
+ const bool hasX = !!x;
+ const bool hasY = !!y;
+
+ if ( !hasX && !hasY )
+ return;
+
+ if( !hasX )
+ x = boost::in_place();
+ else if ( !hasY )
+ y = boost::in_place();
+
+ // Boost.Utility.Swap will take care of ADL and workarounds for broken compilers
+ boost::swap(x.get(),y.get());
+
+ if( !hasX )
+ y = boost::none ;
+ else if( !hasY )
+ x = boost::none ;
+ }
+};
+
+template<>
+struct swap_selector<false>
+{
+ template<class T>
+ static void optional_swap ( optional<T>& x, optional<T>& y )
+ {
+ const bool hasX = !!x;
+ const bool hasY = !!y;
+
+ if ( !hasX && hasY )
+ {
+ x = y.get();
+ y = boost::none ;
+ }
+ else if ( hasX && !hasY )
+ {
+ y = x.get();
+ x = boost::none ;
+ }
+ else if ( hasX && hasY )
+ {
+ // Boost.Utility.Swap will take care of ADL and workarounds for broken compilers
+ boost::swap(x.get(),y.get());
+ }
+ }
+};
} // namespace optional_detail
+template<class T>
+struct optional_swap_should_use_default_constructor : has_nothrow_default_constructor<T> {} ;
+
template<class T> inline void swap ( optional<T>& x, optional<T>& y )
{
- optional_detail::optional_swap(x,y);
+ optional_detail::swap_selector<optional_swap_should_use_default_constructor<T>::value>::optional_swap(x, y);
}
-
} // namespace boost
#endif
-
diff --git a/3rdParty/Boost/src/boost/optional/optional_io.hpp b/3rdParty/Boost/src/boost/optional/optional_io.hpp
deleted file mode 100644
index 85a1857..0000000
--- a/3rdParty/Boost/src/boost/optional/optional_io.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright (C) 2005, Fernando Luis Cacciola Carballal.
-//
-// Use, modification, and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/optional for documentation.
-//
-// You are welcome to contact the author at:
-// fernando_cacciola@hotmail.com
-//
-#ifndef BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
-#define BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
-
-#if defined __GNUC__
-# if (__GNUC__ == 2 && __GNUC_MINOR__ <= 97)
-# define BOOST_OPTIONAL_NO_TEMPLATED_STREAMS
-# endif
-#endif // __GNUC__
-
-#if defined BOOST_OPTIONAL_NO_TEMPLATED_STREAMS
-# include <iostream>
-#else
-# include <istream>
-# include <ostream>
-#endif
-
-
-#include "boost/optional/optional.hpp"
-#include "boost/utility/value_init.hpp"
-
-namespace boost
-{
-
-#if defined (BOOST_NO_TEMPLATED_STREAMS)
-template<class T>
-inline std::ostream& operator<<(std::ostream& out, optional<T> const& v)
-#else
-template<class CharType, class CharTrait, class T>
-inline
-std::basic_ostream<CharType, CharTrait>&
-operator<<(std::basic_ostream<CharType, CharTrait>& out, optional<T> const& v)
-#endif
-{
- if ( out.good() )
- {
- if ( !v )
- out << "--" ;
- else out << ' ' << *v ;
- }
-
- return out;
-}
-
-#if defined (BOOST_NO_TEMPLATED_STREAMS)
-template<class T>
-inline std::istream& operator>>(std::istream& in, optional<T>& v)
-#else
-template<class CharType, class CharTrait, class T>
-inline
-std::basic_istream<CharType, CharTrait>&
-operator>>(std::basic_istream<CharType, CharTrait>& in, optional<T>& v)
-#endif
-{
- if ( in.good() )
- {
- int d = in.get();
- if ( d == ' ' )
- {
- T x ;
- in >> x;
- v = x ;
- }
- else
- v = optional<T>() ;
- }
-
- return in;
-}
-
-} // namespace boost
-
-#endif
-
diff --git a/3rdParty/Boost/src/boost/preprocessor/punctuation/paren.hpp b/3rdParty/Boost/src/boost/preprocessor/punctuation/paren.hpp
new file mode 100644
index 0000000..28c18cb
--- /dev/null
+++ b/3rdParty/Boost/src/boost/preprocessor/punctuation/paren.hpp
@@ -0,0 +1,23 @@
+# /* **************************************************************************
+# * *
+# * (C) Copyright Paul Mensonides 2002.
+# * 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 most recent version. */
+#
+# ifndef BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+# define BOOST_PREPROCESSOR_PUNCTUATION_PAREN_HPP
+#
+# /* BOOST_PP_LPAREN */
+#
+# define BOOST_PP_LPAREN() (
+#
+# /* BOOST_PP_RPAREN */
+#
+# define BOOST_PP_RPAREN() )
+#
+# endif
diff --git a/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp b/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp
index 506cb35..a1124b2 100644
--- a/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp
+++ b/3rdParty/Boost/src/boost/program_options/detail/parsers.hpp
@@ -36,11 +36,11 @@ namespace boost { namespace program_options {
template<class charT>
basic_command_line_parser<charT>::
- basic_command_line_parser(int argc, charT* argv[])
+ basic_command_line_parser(int argc, const charT* const argv[])
: detail::cmdline(
// Explicit template arguments are required by gcc 3.3.1
// (at least mingw version), and do no harm on other compilers.
- to_internal(detail::make_vector<charT, charT**>(argv+1, argv+argc+!argc)))
+ to_internal(detail::make_vector<charT, const charT* const*>(argv+1, argv+argc+!argc)))
{}
@@ -111,7 +111,7 @@ namespace boost { namespace program_options {
template<class charT>
basic_parsed_options<charT>
- parse_command_line(int argc, charT* argv[],
+ parse_command_line(int argc, const charT* const argv[],
const options_description& desc,
int style,
function1<std::pair<std::string, std::string>,
diff --git a/3rdParty/Boost/src/boost/program_options/parsers.hpp b/3rdParty/Boost/src/boost/program_options/parsers.hpp
index 49fb19c..c57b971 100644
--- a/3rdParty/Boost/src/boost/program_options/parsers.hpp
+++ b/3rdParty/Boost/src/boost/program_options/parsers.hpp
@@ -100,7 +100,7 @@ namespace boost { namespace program_options {
/** Creates a command line parser for the specified arguments
list. The parameters should be the same as passed to 'main'.
*/
- basic_command_line_parser(int argc, charT* argv[]);
+ basic_command_line_parser(int argc, const charT* const argv[]);
/** Sets options descriptions to use. */
basic_command_line_parser& options(const options_description& desc);
@@ -144,7 +144,7 @@ namespace boost { namespace program_options {
*/
template<class charT>
basic_parsed_options<charT>
- parse_command_line(int argc, charT* argv[],
+ parse_command_line(int argc, const charT* const argv[],
const options_description&,
int style = 0,
function1<std::pair<std::string, std::string>,
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/exception_implementation.hpp b/3rdParty/Boost/src/boost/property_tree/detail/exception_implementation.hpp
deleted file mode 100644
index 551e10c..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/exception_implementation.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_EXCEPTIONS_IMPLEMENTATION_HPP_INCLUDED
-
-namespace boost { namespace property_tree
-{
-
- namespace detail
- {
-
- // Helper for preparing what string in ptree_bad_path exception
- template<class P> inline
- std::string prepare_bad_path_what(const std::string &what,
- const P &path)
- {
- return what + " (" + path.dump() + ")";
- }
-
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // ptree_error
-
- inline ptree_error::ptree_error(const std::string &w):
- std::runtime_error(w)
- {
- }
-
- inline ptree_error::~ptree_error() throw()
- {
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // ptree_bad_data
-
- template<class D> inline
- ptree_bad_data::ptree_bad_data(const std::string &w, const D &d):
- ptree_error(w), m_data(d)
- {
- }
-
- inline ptree_bad_data::~ptree_bad_data() throw()
- {
- }
-
- template<class D> inline
- D ptree_bad_data::data()
- {
- return boost::any_cast<D>(m_data);
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // ptree_bad_path
-
- template<class P> inline
- ptree_bad_path::ptree_bad_path(const std::string &w, const P &p):
- ptree_error(detail::prepare_bad_path_what(w, p)), m_path(p)
- {
-
- }
-
- inline ptree_bad_path::~ptree_bad_path() throw()
- {
- }
-
- template<class P> inline
- P ptree_bad_path::path()
- {
- return boost::any_cast<P>(m_path);
- }
-
-}}
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/file_parser_error.hpp b/3rdParty/Boost/src/boost/property_tree/detail/file_parser_error.hpp
deleted file mode 100644
index ff90583..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/file_parser_error.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_FILE_PARSER_ERROR_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_FILE_PARSER_ERROR_HPP_INCLUDED
-
-#include <boost/property_tree/ptree.hpp>
-#include <string>
-
-namespace boost { namespace property_tree
-{
-
- //! File parse error
- class file_parser_error: public ptree_error
- {
-
- public:
-
- ///////////////////////////////////////////////////////////////////////
- // Construction & destruction
-
- // Construct error
- file_parser_error(const std::string &msg,
- const std::string &file,
- unsigned long l) :
- ptree_error(format_what(msg, file, l)),
- m_message(msg), m_filename(file), m_line(l)
- {
- }
-
- ~file_parser_error() throw()
- // gcc 3.4.2 complains about lack of throw specifier on compiler
- // generated dtor
- {
- }
-
- ///////////////////////////////////////////////////////////////////////
- // Data access
-
- // Get error message (without line and file - use what() to get
- // full message)
- std::string message() const
- {
- return m_message;
- }
-
- // Get error filename
- std::string filename() const
- {
- return m_filename;
- }
-
- // Get error line number
- unsigned long line() const
- {
- return m_line;
- }
-
- private:
-
- std::string m_message;
- std::string m_filename;
- unsigned long m_line;
-
- // Format error message to be returned by std::runtime_error::what()
- static std::string format_what(const std::string &msg,
- const std::string &file,
- unsigned long l)
- {
- std::stringstream stream;
- stream << (file.empty() ? "<unspecified file>" : file.c_str());
- if (l > 0)
- stream << '(' << l << ')';
- stream << ": " << msg;
- return stream.str();
- }
-
- };
-
-} }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/ptree_implementation.hpp b/3rdParty/Boost/src/boost/property_tree/detail/ptree_implementation.hpp
deleted file mode 100644
index 4220002..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/ptree_implementation.hpp
+++ /dev/null
@@ -1,905 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_PTREE_IMPLEMENTATION_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_PTREE_IMPLEMENTATION_HPP_INCLUDED
-
-#include <boost/iterator/iterator_adaptor.hpp>
-#include <boost/iterator/reverse_iterator.hpp>
-#include <memory>
-#include <cassert>
-
-#if defined(BOOST_MSVC) && \
- (_MSC_FULL_VER >= 160000000 && _MSC_FULL_VER < 170000000)
-#define BOOST_PROPERTY_TREE_PAIR_BUG
-#endif
-
-namespace boost { namespace property_tree
-{
- template <class K, class D, class C>
- struct basic_ptree<K, D, C>::subs
- {
- struct by_name {};
- // The actual child container.
-#if defined(BOOST_PROPERTY_TREE_PAIR_BUG)
- // MSVC 10 has moved std::pair's members to a base
- // class. Unfortunately this does break the interface.
- BOOST_STATIC_CONSTANT(unsigned,
- first_offset = offsetof(value_type, first));
- typedef multi_index_container<value_type,
- multi_index::indexed_by<
- multi_index::sequenced<>,
- multi_index::ordered_non_unique<multi_index::tag<by_name>,
- multi_index::member_offset<value_type, const key_type,
- first_offset>,
- key_compare
- >
- >
- > base_container;
-#else
- typedef multi_index_container<value_type,
- multi_index::indexed_by<
- multi_index::sequenced<>,
- multi_index::ordered_non_unique<multi_index::tag<by_name>,
- multi_index::member<value_type, const key_type,
- &value_type::first>,
- key_compare
- >
- >
- > base_container;
-#endif
- // The by-name lookup index.
- typedef typename base_container::template index<by_name>::type
- by_name_index;
-
- // Access functions for getting to the children of a tree.
- static base_container& ch(self_type *s) {
- return *static_cast<base_container*>(s->m_children);
- }
- static const base_container& ch(const self_type *s) {
- return *static_cast<const base_container*>(s->m_children);
- }
- static by_name_index& assoc(self_type *s) {
- return ch(s).BOOST_NESTED_TEMPLATE get<by_name>();
- }
- static const by_name_index& assoc(const self_type *s) {
- return ch(s).BOOST_NESTED_TEMPLATE get<by_name>();
- }
- };
- template <class K, class D, class C>
- class basic_ptree<K, D, C>::iterator : public boost::iterator_adaptor<
- iterator, typename subs::base_container::iterator, value_type>
- {
- friend class boost::iterator_core_access;
- typedef boost::iterator_adaptor<
- iterator, typename subs::base_container::iterator, value_type>
- baset;
- public:
- typedef typename baset::reference reference;
- iterator() {}
- explicit iterator(typename iterator::base_type b)
- : iterator::iterator_adaptor_(b)
- {}
- reference dereference() const
- {
- // multi_index doesn't allow modification of its values, because
- // indexes could sort by anything, and modification screws that up.
- // However, we only sort by the key, and it's protected against
- // modification in the value_type, so this const_cast is safe.
- return const_cast<reference>(*this->base_reference());
- }
- };
- template <class K, class D, class C>
- class basic_ptree<K, D, C>::const_iterator : public boost::iterator_adaptor<
- const_iterator, typename subs::base_container::const_iterator>
- {
- public:
- const_iterator() {}
- explicit const_iterator(typename const_iterator::base_type b)
- : const_iterator::iterator_adaptor_(b)
- {}
- const_iterator(iterator b)
- : const_iterator::iterator_adaptor_(b.base())
- {}
- };
- template <class K, class D, class C>
- class basic_ptree<K, D, C>::reverse_iterator
- : public boost::reverse_iterator<iterator>
- {
- public:
- reverse_iterator() {}
- explicit reverse_iterator(iterator b)
- : boost::reverse_iterator<iterator>(b)
- {}
- };
- template <class K, class D, class C>
- class basic_ptree<K, D, C>::const_reverse_iterator
- : public boost::reverse_iterator<const_iterator>
- {
- public:
- const_reverse_iterator() {}
- explicit const_reverse_iterator(const_iterator b)
- : boost::reverse_iterator<const_iterator>(b)
- {}
- const_reverse_iterator(
- typename basic_ptree<K, D, C>::reverse_iterator b)
- : boost::reverse_iterator<const_iterator>(b)
- {}
- };
- template <class K, class D, class C>
- class basic_ptree<K, D, C>::assoc_iterator
- : public boost::iterator_adaptor<assoc_iterator,
- typename subs::by_name_index::iterator,
- value_type>
- {
- friend class boost::iterator_core_access;
- typedef boost::iterator_adaptor<assoc_iterator,
- typename subs::by_name_index::iterator,
- value_type>
- baset;
- public:
- typedef typename baset::reference reference;
- assoc_iterator() {}
- explicit assoc_iterator(typename assoc_iterator::base_type b)
- : assoc_iterator::iterator_adaptor_(b)
- {}
- reference dereference() const
- {
- return const_cast<reference>(*this->base_reference());
- }
- };
- template <class K, class D, class C>
- class basic_ptree<K, D, C>::const_assoc_iterator
- : public boost::iterator_adaptor<const_assoc_iterator,
- typename subs::by_name_index::const_iterator>
- {
- public:
- const_assoc_iterator() {}
- explicit const_assoc_iterator(
- typename const_assoc_iterator::base_type b)
- : const_assoc_iterator::iterator_adaptor_(b)
- {}
- const_assoc_iterator(assoc_iterator b)
- : const_assoc_iterator::iterator_adaptor_(b.base())
- {}
- };
-
-
- // Big five
-
- // Perhaps the children collection could be created on-demand only, to
- // reduce heap traffic. But that's a lot more work to implement.
-
- template<class K, class D, class C> inline
- basic_ptree<K, D, C>::basic_ptree()
- : m_children(new typename subs::base_container)
- {
- }
-
- template<class K, class D, class C> inline
- basic_ptree<K, D, C>::basic_ptree(const data_type &d)
- : m_data(d), m_children(new typename subs::base_container)
- {
- }
-
- template<class K, class D, class C> inline
- basic_ptree<K, D, C>::basic_ptree(const basic_ptree<K, D, C> &rhs)
- : m_data(rhs.m_data),
- m_children(new typename subs::base_container(subs::ch(&rhs)))
- {
- }
-
- template<class K, class D, class C>
- basic_ptree<K, D, C> &
- basic_ptree<K, D, C>::operator =(const basic_ptree<K, D, C> &rhs)
- {
- self_type(rhs).swap(*this);
- return *this;
- }
-
- template<class K, class D, class C>
- basic_ptree<K, D, C>::~basic_ptree()
- {
- delete &subs::ch(this);
- }
-
- template<class K, class D, class C> inline
- void basic_ptree<K, D, C>::swap(basic_ptree<K, D, C> &rhs)
- {
- m_data.swap(rhs.m_data);
- // Void pointers, no ADL necessary
- std::swap(m_children, rhs.m_children);
- }
-
- // Container view
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::size_type
- basic_ptree<K, D, C>::size() const
- {
- return subs::ch(this).size();
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::size_type
- basic_ptree<K, D, C>::max_size() const
- {
- return subs::ch(this).max_size();
- }
-
- template<class K, class D, class C> inline
- bool basic_ptree<K, D, C>::empty() const
- {
- return subs::ch(this).empty();
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::begin()
- {
- return iterator(subs::ch(this).begin());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_iterator
- basic_ptree<K, D, C>::begin() const
- {
- return const_iterator(subs::ch(this).begin());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::end()
- {
- return iterator(subs::ch(this).end());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_iterator
- basic_ptree<K, D, C>::end() const
- {
- return const_iterator(subs::ch(this).end());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::reverse_iterator
- basic_ptree<K, D, C>::rbegin()
- {
- return reverse_iterator(this->end());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_reverse_iterator
- basic_ptree<K, D, C>::rbegin() const
- {
- return const_reverse_iterator(this->end());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::reverse_iterator
- basic_ptree<K, D, C>::rend()
- {
- return reverse_iterator(this->begin());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_reverse_iterator
- basic_ptree<K, D, C>::rend() const
- {
- return const_reverse_iterator(this->begin());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::value_type &
- basic_ptree<K, D, C>::front()
- {
- return const_cast<value_type&>(subs::ch(this).front());
- }
-
- template<class K, class D, class C> inline
- const typename basic_ptree<K, D, C>::value_type &
- basic_ptree<K, D, C>::front() const
- {
- return subs::ch(this).front();
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::value_type &
- basic_ptree<K, D, C>::back()
- {
- return const_cast<value_type&>(subs::ch(this).back());
- }
-
- template<class K, class D, class C> inline
- const typename basic_ptree<K, D, C>::value_type &
- basic_ptree<K, D, C>::back() const
- {
- return subs::ch(this).back();
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::insert(iterator where, const value_type &value)
- {
- return iterator(subs::ch(this).insert(where.base(), value).first);
- }
-
- template<class K, class D, class C>
- template<class It> inline
- void basic_ptree<K, D, C>::insert(iterator where, It first, It last)
- {
- subs::ch(this).insert(where.base(), first, last);
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::erase(iterator where)
- {
- return iterator(subs::ch(this).erase(where.base()));
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::erase(iterator first, iterator last)
- {
- return iterator(subs::ch(this).erase(first.base(), last.base()));
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::push_front(const value_type &value)
- {
- return iterator(subs::ch(this).push_front(value).first);
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::push_back(const value_type &value)
- {
- return iterator(subs::ch(this).push_back(value).first);
- }
-
- template<class K, class D, class C> inline
- void basic_ptree<K, D, C>::pop_front()
- {
- subs::ch(this).pop_front();
- }
-
- template<class K, class D, class C> inline
- void basic_ptree<K, D, C>::pop_back()
- {
- subs::ch(this).pop_back();
- }
-
- template<class K, class D, class C> inline
- void basic_ptree<K, D, C>::reverse()
- {
- subs::ch(this).reverse();
- }
-
- template<class K, class D, class C> inline
- void basic_ptree<K, D, C>::sort()
- {
- subs::ch(this).sort();
- }
-
- template<class K, class D, class C>
- template<class Compare> inline
- void basic_ptree<K, D, C>::sort(Compare comp)
- {
- subs::ch(this).sort(comp);
- }
-
- // Equality
-
- template<class K, class D, class C> inline
- bool basic_ptree<K, D, C>::operator ==(
- const basic_ptree<K, D, C> &rhs) const
- {
- // The size test is cheap, so add it as an optimization
- return size() == rhs.size() && data() == rhs.data() &&
- subs::ch(this) == subs::ch(&rhs);
- }
-
- template<class K, class D, class C> inline
- bool basic_ptree<K, D, C>::operator !=(
- const basic_ptree<K, D, C> &rhs) const
- {
- return !(*this == rhs);
- }
-
- // Associative view
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::assoc_iterator
- basic_ptree<K, D, C>::ordered_begin()
- {
- return assoc_iterator(subs::assoc(this).begin());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_assoc_iterator
- basic_ptree<K, D, C>::ordered_begin() const
- {
- return const_assoc_iterator(subs::assoc(this).begin());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::assoc_iterator
- basic_ptree<K, D, C>::not_found()
- {
- return assoc_iterator(subs::assoc(this).end());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_assoc_iterator
- basic_ptree<K, D, C>::not_found() const
- {
- return const_assoc_iterator(subs::assoc(this).end());
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::assoc_iterator
- basic_ptree<K, D, C>::find(const key_type &key)
- {
- return assoc_iterator(subs::assoc(this).find(key));
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_assoc_iterator
- basic_ptree<K, D, C>::find(const key_type &key) const
- {
- return const_assoc_iterator(subs::assoc(this).find(key));
- }
-
- template<class K, class D, class C> inline
- std::pair<
- typename basic_ptree<K, D, C>::assoc_iterator,
- typename basic_ptree<K, D, C>::assoc_iterator
- > basic_ptree<K, D, C>::equal_range(const key_type &key)
- {
- std::pair<typename subs::by_name_index::iterator,
- typename subs::by_name_index::iterator> r(
- subs::assoc(this).equal_range(key));
- return std::pair<assoc_iterator, assoc_iterator>(
- assoc_iterator(r.first), assoc_iterator(r.second));
- }
-
- template<class K, class D, class C> inline
- std::pair<
- typename basic_ptree<K, D, C>::const_assoc_iterator,
- typename basic_ptree<K, D, C>::const_assoc_iterator
- > basic_ptree<K, D, C>::equal_range(const key_type &key) const
- {
- std::pair<typename subs::by_name_index::const_iterator,
- typename subs::by_name_index::const_iterator> r(
- subs::assoc(this).equal_range(key));
- return std::pair<const_assoc_iterator, const_assoc_iterator>(
- const_assoc_iterator(r.first), const_assoc_iterator(r.second));
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::size_type
- basic_ptree<K, D, C>::count(const key_type &key) const
- {
- return subs::assoc(this).count(key);
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::size_type
- basic_ptree<K, D, C>::erase(const key_type &key)
- {
- return subs::assoc(this).erase(key);
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::iterator
- basic_ptree<K, D, C>::to_iterator(assoc_iterator ai)
- {
- return iterator(subs::ch(this).
- BOOST_NESTED_TEMPLATE project<0>(ai.base()));
- }
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::const_iterator
- basic_ptree<K, D, C>::to_iterator(const_assoc_iterator ai) const
- {
- return const_iterator(subs::ch(this).
- BOOST_NESTED_TEMPLATE project<0>(ai.base()));
- }
-
- // Property tree view
-
- template<class K, class D, class C> inline
- typename basic_ptree<K, D, C>::data_type &
- basic_ptree<K, D, C>::data()
- {
- return m_data;
- }
-
- template<class K, class D, class C> inline
- const typename basic_ptree<K, D, C>::data_type &
- basic_ptree<K, D, C>::data() const
- {
- return m_data;
- }
-
- template<class K, class D, class C> inline
- void basic_ptree<K, D, C>::clear()
- {
- m_data = data_type();
- subs::ch(this).clear();
- }
-
- template<class K, class D, class C>
- basic_ptree<K, D, C> &
- basic_ptree<K, D, C>::get_child(const path_type &path)
- {
- path_type p(path);
- self_type *n = walk_path(p);
- if (!n) {
- BOOST_PROPERTY_TREE_THROW(ptree_bad_path("No such node", path));
- }
- return *n;
- }
-
- template<class K, class D, class C> inline
- const basic_ptree<K, D, C> &
- basic_ptree<K, D, C>::get_child(const path_type &path) const
- {
- return const_cast<self_type*>(this)->get_child(path);
- }
-
- template<class K, class D, class C> inline
- basic_ptree<K, D, C> &
- basic_ptree<K, D, C>::get_child(const path_type &path,
- self_type &default_value)
- {
- path_type p(path);
- self_type *n = walk_path(p);
- return n ? *n : default_value;
- }
-
- template<class K, class D, class C> inline
- const basic_ptree<K, D, C> &
- basic_ptree<K, D, C>::get_child(const path_type &path,
- const self_type &default_value) const
- {
- return const_cast<self_type*>(this)->get_child(path,
- const_cast<self_type&>(default_value));
- }
-
-
- template<class K, class D, class C>
- optional<basic_ptree<K, D, C> &>
- basic_ptree<K, D, C>::get_child_optional(const path_type &path)
- {
- path_type p(path);
- self_type *n = walk_path(p);
- if (!n) {
- return optional<self_type&>();
- }
- return *n;
- }
-
- template<class K, class D, class C>
- optional<const basic_ptree<K, D, C> &>
- basic_ptree<K, D, C>::get_child_optional(const path_type &path) const
- {
- path_type p(path);
- self_type *n = walk_path(p);
- if (!n) {
- return optional<const self_type&>();
- }
- return *n;
- }
-
- template<class K, class D, class C>
- basic_ptree<K, D, C> &
- basic_ptree<K, D, C>::put_child(const path_type &path,
- const self_type &value)
- {
- path_type p(path);
- self_type &parent = force_path(p);
- // Got the parent. Now get the correct child.
- key_type fragment = p.reduce();
- assoc_iterator el = parent.find(fragment);
- // If the new child exists, replace it.
- if(el != parent.not_found()) {
- return el->second = value;
- } else {
- return parent.push_back(value_type(fragment, value))->second;
- }
- }
-
- template<class K, class D, class C>
- basic_ptree<K, D, C> &
- basic_ptree<K, D, C>::add_child(const path_type &path,
- const self_type &value)
- {
- path_type p(path);
- self_type &parent = force_path(p);
- // Got the parent.
- key_type fragment = p.reduce();
- return parent.push_back(value_type(fragment, value))->second;
- }
-
- template<class K, class D, class C>
- template<class Type, class Translator>
- typename boost::enable_if<detail::is_translator<Translator>, Type>::type
- basic_ptree<K, D, C>::get_value(Translator tr) const
- {
- if(boost::optional<Type> o = get_value_optional<Type>(tr)) {
- return *o;
- }
- BOOST_PROPERTY_TREE_THROW(ptree_bad_data(
- std::string("conversion of data to type \"") +
- typeid(Type).name() + "\" failed", data()));
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- Type basic_ptree<K, D, C>::get_value() const
- {
- return get_value<Type>(
- typename translator_between<data_type, Type>::type());
- }
-
- template<class K, class D, class C>
- template<class Type, class Translator> inline
- Type basic_ptree<K, D, C>::get_value(const Type &default_value,
- Translator tr) const
- {
- return get_value_optional<Type>(tr).get_value_or(default_value);
- }
-
- template<class K, class D, class C>
- template <class Ch, class Translator>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- basic_ptree<K, D, C>::get_value(const Ch *default_value, Translator tr)const
- {
- return get_value<std::basic_string<Ch>, Translator>(default_value, tr);
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- typename boost::disable_if<detail::is_translator<Type>, Type>::type
- basic_ptree<K, D, C>::get_value(const Type &default_value) const
- {
- return get_value(default_value,
- typename translator_between<data_type, Type>::type());
- }
-
- template<class K, class D, class C>
- template <class Ch>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- basic_ptree<K, D, C>::get_value(const Ch *default_value) const
- {
- return get_value< std::basic_string<Ch> >(default_value);
- }
-
- template<class K, class D, class C>
- template<class Type, class Translator> inline
- optional<Type> basic_ptree<K, D, C>::get_value_optional(
- Translator tr) const
- {
- return tr.get_value(data());
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- optional<Type> basic_ptree<K, D, C>::get_value_optional() const
- {
- return get_value_optional<Type>(
- typename translator_between<data_type, Type>::type());
- }
-
- template<class K, class D, class C>
- template<class Type, class Translator> inline
- typename boost::enable_if<detail::is_translator<Translator>, Type>::type
- basic_ptree<K, D, C>::get(const path_type &path,
- Translator tr) const
- {
- return get_child(path).BOOST_NESTED_TEMPLATE get_value<Type>(tr);
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- Type basic_ptree<K, D, C>::get(const path_type &path) const
- {
- return get_child(path).BOOST_NESTED_TEMPLATE get_value<Type>();
- }
-
- template<class K, class D, class C>
- template<class Type, class Translator> inline
- Type basic_ptree<K, D, C>::get(const path_type &path,
- const Type &default_value,
- Translator tr) const
- {
- return get_optional<Type>(path, tr).get_value_or(default_value);
- }
-
- template<class K, class D, class C>
- template <class Ch, class Translator>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- basic_ptree<K, D, C>::get(
- const path_type &path, const Ch *default_value, Translator tr) const
- {
- return get<std::basic_string<Ch>, Translator>(path, default_value, tr);
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- typename boost::disable_if<detail::is_translator<Type>, Type>::type
- basic_ptree<K, D, C>::get(const path_type &path,
- const Type &default_value) const
- {
- return get_optional<Type>(path).get_value_or(default_value);
- }
-
- template<class K, class D, class C>
- template <class Ch>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- basic_ptree<K, D, C>::get(
- const path_type &path, const Ch *default_value) const
- {
- return get< std::basic_string<Ch> >(path, default_value);
- }
-
- template<class K, class D, class C>
- template<class Type, class Translator>
- optional<Type> basic_ptree<K, D, C>::get_optional(const path_type &path,
- Translator tr) const
- {
- if (optional<const self_type&> child = get_child_optional(path))
- return child.get().
- BOOST_NESTED_TEMPLATE get_value_optional<Type>(tr);
- else
- return optional<Type>();
- }
-
- template<class K, class D, class C>
- template<class Type>
- optional<Type> basic_ptree<K, D, C>::get_optional(
- const path_type &path) const
- {
- if (optional<const self_type&> child = get_child_optional(path))
- return child.get().BOOST_NESTED_TEMPLATE get_value_optional<Type>();
- else
- return optional<Type>();
- }
-
- template<class K, class D, class C>
- template<class Type, class Translator>
- void basic_ptree<K, D, C>::put_value(const Type &value, Translator tr)
- {
- if(optional<data_type> o = tr.put_value(value)) {
- data() = *o;
- } else {
- BOOST_PROPERTY_TREE_THROW(ptree_bad_data(
- std::string("conversion of type \"") + typeid(Type).name() +
- "\" to data failed", boost::any()));
- }
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- void basic_ptree<K, D, C>::put_value(const Type &value)
- {
- put_value(value, typename translator_between<data_type, Type>::type());
- }
-
- template<class K, class D, class C>
- template<class Type, typename Translator>
- basic_ptree<K, D, C> & basic_ptree<K, D, C>::put(
- const path_type &path, const Type &value, Translator tr)
- {
- if(optional<self_type &> child = get_child_optional(path)) {
- child.get().put_value(value, tr);
- return *child;
- } else {
- self_type &child2 = put_child(path, self_type());
- child2.put_value(value, tr);
- return child2;
- }
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- basic_ptree<K, D, C> & basic_ptree<K, D, C>::put(
- const path_type &path, const Type &value)
- {
- return put(path, value,
- typename translator_between<data_type, Type>::type());
- }
-
- template<class K, class D, class C>
- template<class Type, typename Translator> inline
- basic_ptree<K, D, C> & basic_ptree<K, D, C>::add(
- const path_type &path, const Type &value, Translator tr)
- {
- self_type &child = add_child(path, self_type());
- child.put_value(value, tr);
- return child;
- }
-
- template<class K, class D, class C>
- template<class Type> inline
- basic_ptree<K, D, C> & basic_ptree<K, D, C>::add(
- const path_type &path, const Type &value)
- {
- return add(path, value,
- typename translator_between<data_type, Type>::type());
- }
-
-
- template<class K, class D, class C>
- basic_ptree<K, D, C> *
- basic_ptree<K, D, C>::walk_path(path_type &p) const
- {
- if(p.empty()) {
- // I'm the child we're looking for.
- return const_cast<basic_ptree*>(this);
- }
- // Recurse down the tree to find the path.
- key_type fragment = p.reduce();
- const_assoc_iterator el = find(fragment);
- if(el == not_found()) {
- // No such child.
- return 0;
- }
- // Not done yet, recurse.
- return el->second.walk_path(p);
- }
-
- template<class K, class D, class C>
- basic_ptree<K, D, C> & basic_ptree<K, D, C>::force_path(path_type &p)
- {
- assert(!p.empty() && "Empty path not allowed for put_child.");
- if(p.single()) {
- // I'm the parent we're looking for.
- return *this;
- }
- key_type fragment = p.reduce();
- assoc_iterator el = find(fragment);
- // If we've found an existing child, go down that path. Else
- // create a new one.
- self_type& child = el == not_found() ?
- push_back(value_type(fragment, self_type()))->second : el->second;
- return child.force_path(p);
- }
-
- // Free functions
-
- template<class K, class D, class C>
- inline void swap(basic_ptree<K, D, C> &pt1, basic_ptree<K, D, C> &pt2)
- {
- pt1.swap(pt2);
- }
-
-} }
-
-#if defined(BOOST_PROPERTY_TREE_PAIR_BUG)
-#undef BOOST_PROPERTY_TREE_PAIR_BUG
-#endif
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/ptree_utils.hpp b/3rdParty/Boost/src/boost/property_tree/detail/ptree_utils.hpp
deleted file mode 100644
index 7e56c8f..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/ptree_utils.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_PTREE_UTILS_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_PTREE_UTILS_HPP_INCLUDED
-
-#include <boost/limits.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#include <boost/mpl/has_xxx.hpp>
-#include <boost/mpl/and.hpp>
-#include <string>
-#include <algorithm>
-#include <locale>
-
-namespace boost { namespace property_tree { namespace detail
-{
-
- template<class T>
- struct less_nocase
- {
- typedef typename T::value_type Ch;
- std::locale m_locale;
- inline bool operator()(Ch c1, Ch c2) const
- {
- return std::toupper(c1, m_locale) < std::toupper(c2, m_locale);
- }
- inline bool operator()(const T &t1, const T &t2) const
- {
- return std::lexicographical_compare(t1.begin(), t1.end(),
- t2.begin(), t2.end(), *this);
- }
- };
-
- template <typename Ch>
- struct is_character : public boost::false_type {};
- template <>
- struct is_character<char> : public boost::true_type {};
- template <>
- struct is_character<wchar_t> : public boost::true_type {};
-
-
- BOOST_MPL_HAS_XXX_TRAIT_DEF(internal_type)
- BOOST_MPL_HAS_XXX_TRAIT_DEF(external_type)
- template <typename T>
- struct is_translator : public boost::mpl::and_<
- has_internal_type<T>, has_external_type<T> > {};
-
-
-
- // Naively convert narrow string to another character type
- template<class Ch>
- std::basic_string<Ch> widen(const char *text)
- {
- std::basic_string<Ch> result;
- while (*text)
- {
- result += Ch(*text);
- ++text;
- }
- return result;
- }
-
- // Naively convert string to narrow character type
- template<class Ch>
- std::string narrow(const Ch *text)
- {
- std::string result;
- while (*text)
- {
- if (*text < 0 || *text > (std::numeric_limits<char>::max)())
- result += '*';
- else
- result += char(*text);
- ++text;
- }
- return result;
- }
-
- // Remove trailing and leading spaces
- template<class Ch>
- std::basic_string<Ch> trim(const std::basic_string<Ch> &s,
- const std::locale &loc = std::locale())
- {
- typename std::basic_string<Ch>::const_iterator first = s.begin();
- typename std::basic_string<Ch>::const_iterator end = s.end();
- while (first != end && std::isspace(*first, loc))
- ++first;
- if (first == end)
- return std::basic_string<Ch>();
- typename std::basic_string<Ch>::const_iterator last = end;
- do --last; while (std::isspace(*last, loc));
- if (first != s.begin() || last + 1 != end)
- return std::basic_string<Ch>(first, last + 1);
- else
- return s;
- }
-
-} } }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/rapidxml.hpp b/3rdParty/Boost/src/boost/property_tree/detail/rapidxml.hpp
deleted file mode 100644
index 712bf3f..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/rapidxml.hpp
+++ /dev/null
@@ -1,2582 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2006, 2009 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_RAPIDXML_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_RAPIDXML_HPP_INCLUDED
-
-//! \file rapidxml.hpp This file contains rapidxml parser and DOM implementation
-
-#include <cstdlib> // For std::size_t
-#include <cassert> // For assert
-#include <new> // For placement new
-
-// On MSVC, disable "conditional expression is constant" warning (level 4).
-// This warning is almost impossible to avoid with certain types of templated code
-#ifdef _MSC_VER
- #pragma warning(push)
- #pragma warning(disable:4127) // Conditional expression is constant
-#endif
-
-///////////////////////////////////////////////////////////////////////////
-// BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR
-
-#include <exception> // For std::exception
-
-#define BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR(what, where) throw parse_error(what, where)
-
-namespace boost { namespace property_tree { namespace detail {namespace rapidxml
-{
-
- //! Parse error exception.
- //! This exception is thrown by the parser when an error occurs.
- //! Use what() function to get human-readable error message.
- //! Use where() function to get a pointer to position within source text where error was detected.
- //! <br><br>
- //! If throwing exceptions by the parser is undesirable,
- //! it can be disabled by defining RAPIDXML_NO_EXCEPTIONS macro before rapidxml.hpp is included.
- //! This will cause the parser to call rapidxml::parse_error_handler() function instead of throwing an exception.
- //! This function must be defined by the user.
- //! <br><br>
- //! This class derives from <code>std::exception</code> class.
- class parse_error: public std::exception
- {
-
- public:
-
- //! Constructs parse error
- parse_error(const char *wa, void *we)
- : m_what(wa)
- , m_where(we)
- {
- }
-
- //! Gets human readable description of error.
- //! \return Pointer to null terminated description of the error.
- virtual const char *what() const throw()
- {
- return m_what;
- }
-
- //! Gets pointer to character data where error happened.
- //! Ch should be the same as char type of xml_document that produced the error.
- //! \return Pointer to location within the parsed string where error occured.
- template<class Ch>
- Ch *where() const
- {
- return reinterpret_cast<Ch *>(m_where);
- }
-
- private:
-
- const char *m_what;
- void *m_where;
-
- };
-}}}}
-
-///////////////////////////////////////////////////////////////////////////
-// Pool sizes
-
-#ifndef BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE
- // Size of static memory block of memory_pool.
- // Define BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value.
- // No dynamic memory allocations are performed by memory_pool until static memory is exhausted.
- #define BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE (64 * 1024)
-#endif
-
-#ifndef BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE
- // Size of dynamic memory block of memory_pool.
- // Define BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE before including rapidxml.hpp if you want to override the default value.
- // After the static block is exhausted, dynamic blocks with approximately this size are allocated by memory_pool.
- #define BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE (64 * 1024)
-#endif
-
-#ifndef BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT
- // Memory allocation alignment.
- // Define BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT before including rapidxml.hpp if you want to override the default value, which is the size of pointer.
- // All memory allocations for nodes, attributes and strings will be aligned to this value.
- // This must be a power of 2 and at least 1, otherwise memory_pool will not work.
- #define BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT sizeof(void *)
-#endif
-
-namespace boost { namespace property_tree { namespace detail {namespace rapidxml
-{
- // Forward declarations
- template<class Ch> class xml_node;
- template<class Ch> class xml_attribute;
- template<class Ch> class xml_document;
-
- //! Enumeration listing all node types produced by the parser.
- //! Use xml_node::type() function to query node type.
- enum node_type
- {
- node_document, //!< A document node. Name and value are empty.
- node_element, //!< An element node. Name contains element name. Value contains text of first data node.
- node_data, //!< A data node. Name is empty. Value contains data text.
- node_cdata, //!< A CDATA node. Name is empty. Value contains data text.
- node_comment, //!< A comment node. Name is empty. Value contains comment text.
- node_declaration, //!< A declaration node. Name and value are empty. Declaration parameters (version, encoding and standalone) are in node attributes.
- node_doctype, //!< A DOCTYPE node. Name is empty. Value contains DOCTYPE text.
- node_pi //!< A PI node. Name contains target. Value contains instructions.
- };
-
- ///////////////////////////////////////////////////////////////////////
- // Parsing flags
-
- //! Parse flag instructing the parser to not create data nodes.
- //! Text of first data node will still be placed in value of parent element, unless rapidxml::parse_no_element_values flag is also specified.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_no_data_nodes = 0x1;
-
- //! Parse flag instructing the parser to not use text of first data node as a value of parent element.
- //! Can be combined with other flags by use of | operator.
- //! Note that child data nodes of element node take precendence over its value when printing.
- //! That is, if element has one or more child data nodes <em>and</em> a value, the value will be ignored.
- //! Use rapidxml::parse_no_data_nodes flag to prevent creation of data nodes if you want to manipulate data using values of elements.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_no_element_values = 0x2;
-
- //! Parse flag instructing the parser to not place zero terminators after strings in the source text.
- //! By default zero terminators are placed, modifying source text.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_no_string_terminators = 0x4;
-
- //! Parse flag instructing the parser to not translate entities in the source text.
- //! By default entities are translated, modifying source text.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_no_entity_translation = 0x8;
-
- //! Parse flag instructing the parser to disable UTF-8 handling and assume plain 8 bit characters.
- //! By default, UTF-8 handling is enabled.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_no_utf8 = 0x10;
-
- //! Parse flag instructing the parser to create XML declaration node.
- //! By default, declaration node is not created.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_declaration_node = 0x20;
-
- //! Parse flag instructing the parser to create comments nodes.
- //! By default, comment nodes are not created.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_comment_nodes = 0x40;
-
- //! Parse flag instructing the parser to create DOCTYPE node.
- //! By default, doctype node is not created.
- //! Although W3C specification allows at most one DOCTYPE node, RapidXml will silently accept documents with more than one.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_doctype_node = 0x80;
-
- //! Parse flag instructing the parser to create PI nodes.
- //! By default, PI nodes are not created.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_pi_nodes = 0x100;
-
- //! Parse flag instructing the parser to validate closing tag names.
- //! If not set, name inside closing tag is irrelevant to the parser.
- //! By default, closing tags are not validated.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_validate_closing_tags = 0x200;
-
- //! Parse flag instructing the parser to trim all leading and trailing whitespace of data nodes.
- //! By default, whitespace is not trimmed.
- //! This flag does not cause the parser to modify source text.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_trim_whitespace = 0x400;
-
- //! Parse flag instructing the parser to condense all whitespace runs of data nodes to a single space character.
- //! Trimming of leading and trailing whitespace of data is controlled by rapidxml::parse_trim_whitespace flag.
- //! By default, whitespace is not normalized.
- //! If this flag is specified, source text will be modified.
- //! Can be combined with other flags by use of | operator.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_normalize_whitespace = 0x800;
-
- // Compound flags
-
- //! Parse flags which represent default behaviour of the parser.
- //! This is always equal to 0, so that all other flags can be simply ored together.
- //! Normally there is no need to inconveniently disable flags by anding with their negated (~) values.
- //! This also means that meaning of each flag is a <i>negation</i> of the default setting.
- //! For example, if flag name is rapidxml::parse_no_utf8, it means that utf-8 is <i>enabled</i> by default,
- //! and using the flag will disable it.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_default = 0;
-
- //! A combination of parse flags that forbids any modifications of the source text.
- //! This also results in faster parsing. However, note that the following will occur:
- //! <ul>
- //! <li>names and values of nodes will not be zero terminated, you have to use xml_base::name_size() and xml_base::value_size() functions to determine where name and value ends</li>
- //! <li>entities will not be translated</li>
- //! <li>whitespace will not be normalized</li>
- //! </ul>
- //! See xml_document::parse() function.
- const int parse_non_destructive = parse_no_string_terminators | parse_no_entity_translation;
-
- //! A combination of parse flags resulting in fastest possible parsing, without sacrificing important data.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_fastest = parse_non_destructive | parse_no_data_nodes;
-
- //! A combination of parse flags resulting in largest amount of data being extracted.
- //! This usually results in slowest parsing.
- //! <br><br>
- //! See xml_document::parse() function.
- const int parse_full = parse_declaration_node | parse_comment_nodes | parse_doctype_node | parse_pi_nodes | parse_validate_closing_tags;
-
- ///////////////////////////////////////////////////////////////////////
- // Internals
-
- //! \cond internal
- namespace internal
- {
-
- // Struct that contains lookup tables for the parser
- // It must be a template to allow correct linking (because it has static data members, which are defined in a header file).
- template<int Dummy>
- struct lookup_tables
- {
- static const unsigned char lookup_whitespace[256]; // Whitespace table
- static const unsigned char lookup_node_name[256]; // Node name table
- static const unsigned char lookup_text[256]; // Text table
- static const unsigned char lookup_text_pure_no_ws[256]; // Text table
- static const unsigned char lookup_text_pure_with_ws[256]; // Text table
- static const unsigned char lookup_attribute_name[256]; // Attribute name table
- static const unsigned char lookup_attribute_data_1[256]; // Attribute data table with single quote
- static const unsigned char lookup_attribute_data_1_pure[256]; // Attribute data table with single quote
- static const unsigned char lookup_attribute_data_2[256]; // Attribute data table with double quotes
- static const unsigned char lookup_attribute_data_2_pure[256]; // Attribute data table with double quotes
- static const unsigned char lookup_digits[256]; // Digits
- static const unsigned char lookup_upcase[256]; // To uppercase conversion table for ASCII characters
- };
-
- // Find length of the string
- template<class Ch>
- inline std::size_t measure(const Ch *p)
- {
- const Ch *tmp = p;
- while (*tmp)
- ++tmp;
- return tmp - p;
- }
-
- // Compare strings for equality
- template<class Ch>
- inline bool compare(const Ch *p1, std::size_t size1, const Ch *p2, std::size_t size2, bool case_sensitive)
- {
- if (size1 != size2)
- return false;
- if (case_sensitive)
- {
- for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)
- if (*p1 != *p2)
- return false;
- }
- else
- {
- for (const Ch *end = p1 + size1; p1 < end; ++p1, ++p2)
- if (lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p1)] != lookup_tables<0>::lookup_upcase[static_cast<unsigned char>(*p2)])
- return false;
- }
- return true;
- }
-
- template<class Ch>
- inline size_t get_index(const Ch c)
- {
- // If not ASCII char, its sematic is same as plain 'z'
- if (c > 255)
- {
- return 'z';
- }
- return c;
- }
- }
- //! \endcond
-
- ///////////////////////////////////////////////////////////////////////
- // Memory pool
-
- //! This class is used by the parser to create new nodes and attributes, without overheads of dynamic memory allocation.
- //! In most cases, you will not need to use this class directly.
- //! However, if you need to create nodes manually or modify names/values of nodes,
- //! you are encouraged to use memory_pool of relevant xml_document to allocate the memory.
- //! Not only is this faster than allocating them by using <code>new</code> operator,
- //! but also their lifetime will be tied to the lifetime of document,
- //! possibly simplyfing memory management.
- //! <br><br>
- //! Call allocate_node() or allocate_attribute() functions to obtain new nodes or attributes from the pool.
- //! You can also call allocate_string() function to allocate strings.
- //! Such strings can then be used as names or values of nodes without worrying about their lifetime.
- //! Note that there is no <code>free()</code> function -- all allocations are freed at once when clear() function is called,
- //! or when the pool is destroyed.
- //! <br><br>
- //! It is also possible to create a standalone memory_pool, and use it
- //! to allocate nodes, whose lifetime will not be tied to any document.
- //! <br><br>
- //! Pool maintains <code>BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE</code> bytes of statically allocated memory.
- //! Until static memory is exhausted, no dynamic memory allocations are done.
- //! When static memory is exhausted, pool allocates additional blocks of memory of size <code>BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE</code> each,
- //! by using global <code>new[]</code> and <code>delete[]</code> operators.
- //! This behaviour can be changed by setting custom allocation routines.
- //! Use set_allocator() function to set them.
- //! <br><br>
- //! Allocations for nodes, attributes and strings are aligned at <code>BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT</code> bytes.
- //! This value defaults to the size of pointer on target architecture.
- //! <br><br>
- //! To obtain absolutely top performance from the parser,
- //! it is important that all nodes are allocated from a single, contiguous block of memory.
- //! Otherwise, cache misses when jumping between two (or more) disjoint blocks of memory can slow down parsing quite considerably.
- //! If required, you can tweak <code>BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE</code>, <code>BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE</code> and <code>BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT</code>
- //! to obtain best wasted memory to performance compromise.
- //! To do it, define their values before rapidxml.hpp file is included.
- //! \param Ch Character type of created nodes.
- template<class Ch = char>
- class memory_pool
- {
-
- public:
-
- //! \cond internal
- typedef void *(alloc_func)(std::size_t); // Type of user-defined function used to allocate memory
- typedef void (free_func)(void *); // Type of user-defined function used to free memory
- //! \endcond
-
- //! Constructs empty pool with default allocator functions.
- memory_pool()
- : m_alloc_func(0)
- , m_free_func(0)
- {
- init();
- }
-
- //! Destroys pool and frees all the memory.
- //! This causes memory occupied by nodes allocated by the pool to be freed.
- //! Nodes allocated from the pool are no longer valid.
- ~memory_pool()
- {
- clear();
- }
-
- //! Allocates a new node from the pool, and optionally assigns name and value to it.
- //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.
- //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function
- //! will call rapidxml::parse_error_handler() function.
- //! \param type Type of node to create.
- //! \param name Name to assign to the node, or 0 to assign no name.
- //! \param value Value to assign to the node, or 0 to assign no value.
- //! \param name_size Size of name to assign, or 0 to automatically calculate size from name string.
- //! \param value_size Size of value to assign, or 0 to automatically calculate size from value string.
- //! \return Pointer to allocated node. This pointer will never be NULL.
- xml_node<Ch> *allocate_node(node_type type,
- const Ch *name = 0, const Ch *value = 0,
- std::size_t name_size = 0, std::size_t value_size = 0)
- {
- void *memory = allocate_aligned(sizeof(xml_node<Ch>));
- xml_node<Ch> *node = new(memory) xml_node<Ch>(type);
- if (name)
- {
- if (name_size > 0)
- node->name(name, name_size);
- else
- node->name(name);
- }
- if (value)
- {
- if (value_size > 0)
- node->value(value, value_size);
- else
- node->value(value);
- }
- return node;
- }
-
- //! Allocates a new attribute from the pool, and optionally assigns name and value to it.
- //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.
- //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function
- //! will call rapidxml::parse_error_handler() function.
- //! \param name Name to assign to the attribute, or 0 to assign no name.
- //! \param value Value to assign to the attribute, or 0 to assign no value.
- //! \param name_size Size of name to assign, or 0 to automatically calculate size from name string.
- //! \param value_size Size of value to assign, or 0 to automatically calculate size from value string.
- //! \return Pointer to allocated attribute. This pointer will never be NULL.
- xml_attribute<Ch> *allocate_attribute(const Ch *name = 0, const Ch *value = 0,
- std::size_t name_size = 0, std::size_t value_size = 0)
- {
- void *memory = allocate_aligned(sizeof(xml_attribute<Ch>));
- xml_attribute<Ch> *attribute = new(memory) xml_attribute<Ch>;
- if (name)
- {
- if (name_size > 0)
- attribute->name(name, name_size);
- else
- attribute->name(name);
- }
- if (value)
- {
- if (value_size > 0)
- attribute->value(value, value_size);
- else
- attribute->value(value);
- }
- return attribute;
- }
-
- //! Allocates a char array of given size from the pool, and optionally copies a given string to it.
- //! If the allocation request cannot be accomodated, this function will throw <code>std::bad_alloc</code>.
- //! If exceptions are disabled by defining RAPIDXML_NO_EXCEPTIONS, this function
- //! will call rapidxml::parse_error_handler() function.
- //! \param source String to initialize the allocated memory with, or 0 to not initialize it.
- //! \param size Number of characters to allocate, or zero to calculate it automatically from source string length; if size is 0, source string must be specified and null terminated.
- //! \return Pointer to allocated char array. This pointer will never be NULL.
- Ch *allocate_string(const Ch *source = 0, std::size_t size = 0)
- {
- assert(source || size); // Either source or size (or both) must be specified
- if (size == 0)
- size = internal::measure(source) + 1;
- Ch *result = static_cast<Ch *>(allocate_aligned(size * sizeof(Ch)));
- if (source)
- for (std::size_t i = 0; i < size; ++i)
- result[i] = source[i];
- return result;
- }
-
- //! Clones an xml_node and its hierarchy of child nodes and attributes.
- //! Nodes and attributes are allocated from this memory pool.
- //! Names and values are not cloned, they are shared between the clone and the source.
- //! Result node can be optionally specified as a second parameter,
- //! in which case its contents will be replaced with cloned source node.
- //! This is useful when you want to clone entire document.
- //! \param source Node to clone.
- //! \param result Node to put results in, or 0 to automatically allocate result node
- //! \return Pointer to cloned node. This pointer will never be NULL.
- xml_node<Ch> *clone_node(const xml_node<Ch> *source, xml_node<Ch> *result = 0)
- {
- // Prepare result node
- if (result)
- {
- result->remove_all_attributes();
- result->remove_all_nodes();
- result->type(source->type());
- }
- else
- result = allocate_node(source->type());
-
- // Clone name and value
- result->name(source->name(), source->name_size());
- result->value(source->value(), source->value_size());
-
- // Clone child nodes and attributes
- for (xml_node<Ch> *child = source->first_node(); child; child = child->next_sibling())
- result->append_node(clone_node(child));
- for (xml_attribute<Ch> *attr = source->first_attribute(); attr; attr = attr->next_attribute())
- result->append_attribute(allocate_attribute(attr->name(), attr->value(), attr->name_size(), attr->value_size()));
-
- return result;
- }
-
- //! Clears the pool.
- //! This causes memory occupied by nodes allocated by the pool to be freed.
- //! Any nodes or strings allocated from the pool will no longer be valid.
- void clear()
- {
- while (m_begin != m_static_memory)
- {
- char *previous_begin = reinterpret_cast<header *>(align(m_begin))->previous_begin;
- if (m_free_func)
- m_free_func(m_begin);
- else
- delete[] m_begin;
- m_begin = previous_begin;
- }
- init();
- }
-
- //! Sets or resets the user-defined memory allocation functions for the pool.
- //! This can only be called when no memory is allocated from the pool yet, otherwise results are undefined.
- //! Allocation function must not return invalid pointer on failure. It should either throw,
- //! stop the program, or use <code>longjmp()</code> function to pass control to other place of program.
- //! If it returns invalid pointer, results are undefined.
- //! <br><br>
- //! User defined allocation functions must have the following forms:
- //! <br><code>
- //! <br>void *allocate(std::size_t size);
- //! <br>void free(void *pointer);
- //! </code><br>
- //! \param af Allocation function, or 0 to restore default function
- //! \param ff Free function, or 0 to restore default function
- void set_allocator(alloc_func *af, free_func *ff)
- {
- assert(m_begin == m_static_memory && m_ptr == align(m_begin)); // Verify that no memory is allocated yet
- m_alloc_func = af;
- m_free_func = ff;
- }
-
- private:
-
- struct header
- {
- char *previous_begin;
- };
-
- void init()
- {
- m_begin = m_static_memory;
- m_ptr = align(m_begin);
- m_end = m_static_memory + sizeof(m_static_memory);
- }
-
- char *align(char *ptr)
- {
- std::size_t alignment = ((BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - (std::size_t(ptr) & (BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - 1))) & (BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - 1));
- return ptr + alignment;
- }
-
- char *allocate_raw(std::size_t size)
- {
- // Allocate
- void *memory;
- if (m_alloc_func) // Allocate memory using either user-specified allocation function or global operator new[]
- {
- memory = m_alloc_func(size);
- assert(memory); // Allocator is not allowed to return 0, on failure it must either throw, stop the program or use longjmp
- }
- else
- {
- memory = new char[size];
- }
- return static_cast<char *>(memory);
- }
-
- void *allocate_aligned(std::size_t size)
- {
- // Calculate aligned pointer
- char *result = align(m_ptr);
-
- // If not enough memory left in current pool, allocate a new pool
- if (result + size > m_end)
- {
- // Calculate required pool size (may be bigger than BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE)
- std::size_t pool_size = BOOST_PROPERTY_TREE_RAPIDXML_DYNAMIC_POOL_SIZE;
- if (pool_size < size)
- pool_size = size;
-
- // Allocate
- std::size_t alloc_size = sizeof(header) + (2 * BOOST_PROPERTY_TREE_RAPIDXML_ALIGNMENT - 2) + pool_size; // 2 alignments required in worst case: one for header, one for actual allocation
- char *raw_memory = allocate_raw(alloc_size);
-
- // Setup new pool in allocated memory
- char *pool = align(raw_memory);
- header *new_header = reinterpret_cast<header *>(pool);
- new_header->previous_begin = m_begin;
- m_begin = raw_memory;
- m_ptr = pool + sizeof(header);
- m_end = raw_memory + alloc_size;
-
- // Calculate aligned pointer again using new pool
- result = align(m_ptr);
- }
-
- // Update pool and return aligned pointer
- m_ptr = result + size;
- return result;
- }
-
- char *m_begin; // Start of raw memory making up current pool
- char *m_ptr; // First free byte in current pool
- char *m_end; // One past last available byte in current pool
- char m_static_memory[BOOST_PROPERTY_TREE_RAPIDXML_STATIC_POOL_SIZE]; // Static raw memory
- alloc_func *m_alloc_func; // Allocator function, or 0 if default is to be used
- free_func *m_free_func; // Free function, or 0 if default is to be used
- };
-
- ///////////////////////////////////////////////////////////////////////////
- // XML base
-
- //! Base class for xml_node and xml_attribute implementing common functions:
- //! name(), name_size(), value(), value_size() and parent().
- //! \param Ch Character type to use
- template<class Ch = char>
- class xml_base
- {
-
- public:
-
- ///////////////////////////////////////////////////////////////////////////
- // Construction & destruction
-
- // Construct a base with empty name, value and parent
- xml_base()
- : m_name(0)
- , m_value(0)
- , m_parent(0)
- {
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Node data access
-
- //! Gets name of the node.
- //! Interpretation of name depends on type of node.
- //! Note that name will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.
- //! <br><br>
- //! Use name_size() function to determine length of the name.
- //! \return Name of node, or empty string if node has no name.
- Ch *name() const
- {
- return m_name ? m_name : nullstr();
- }
-
- //! Gets size of node name, not including terminator character.
- //! This function works correctly irrespective of whether name is or is not zero terminated.
- //! \return Size of node name, in characters.
- std::size_t name_size() const
- {
- return m_name ? m_name_size : 0;
- }
-
- //! Gets value of node.
- //! Interpretation of value depends on type of node.
- //! Note that value will not be zero-terminated if rapidxml::parse_no_string_terminators option was selected during parse.
- //! <br><br>
- //! Use value_size() function to determine length of the value.
- //! \return Value of node, or empty string if node has no value.
- Ch *value() const
- {
- return m_value ? m_value : nullstr();
- }
-
- //! Gets size of node value, not including terminator character.
- //! This function works correctly irrespective of whether value is or is not zero terminated.
- //! \return Size of node value, in characters.
- std::size_t value_size() const
- {
- return m_value ? m_value_size : 0;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Node modification
-
- //! Sets name of node to a non zero-terminated string.
- //! See \ref ownership_of_strings.
- //! <br><br>
- //! Note that node does not own its name or value, it only stores a pointer to it.
- //! It will not delete or otherwise free the pointer on destruction.
- //! It is reponsibility of the user to properly manage lifetime of the string.
- //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -
- //! on destruction of the document the string will be automatically freed.
- //! <br><br>
- //! Size of name must be specified separately, because name does not have to be zero terminated.
- //! Use name(const Ch *) function to have the length automatically calculated (string must be zero terminated).
- //! \param n Name of node to set. Does not have to be zero terminated.
- //! \param size Size of name, in characters. This does not include zero terminator, if one is present.
- void name(const Ch *n, std::size_t size)
- {
- m_name = const_cast<Ch *>(n);
- m_name_size = size;
- }
-
- //! Sets name of node to a zero-terminated string.
- //! See also \ref ownership_of_strings and xml_node::name(const Ch *, std::size_t).
- //! \param n Name of node to set. Must be zero terminated.
- void name(const Ch *n)
- {
- name(n, internal::measure(n));
- }
-
- //! Sets value of node to a non zero-terminated string.
- //! See \ref ownership_of_strings.
- //! <br><br>
- //! Note that node does not own its name or value, it only stores a pointer to it.
- //! It will not delete or otherwise free the pointer on destruction.
- //! It is reponsibility of the user to properly manage lifetime of the string.
- //! The easiest way to achieve it is to use memory_pool of the document to allocate the string -
- //! on destruction of the document the string will be automatically freed.
- //! <br><br>
- //! Size of value must be specified separately, because it does not have to be zero terminated.
- //! Use value(const Ch *) function to have the length automatically calculated (string must be zero terminated).
- //! <br><br>
- //! If an element has a child node of type node_data, it will take precedence over element value when printing.
- //! If you want to manipulate data of elements using values, use parser flag rapidxml::parse_no_data_nodes to prevent creation of data nodes by the parser.
- //! \param val value of node to set. Does not have to be zero terminated.
- //! \param size Size of value, in characters. This does not include zero terminator, if one is present.
- void value(const Ch *val, std::size_t size)
- {
- m_value = const_cast<Ch *>(val);
- m_value_size = size;
- }
-
- //! Sets value of node to a zero-terminated string.
- //! See also \ref ownership_of_strings and xml_node::value(const Ch *, std::size_t).
- //! \param val Vame of node to set. Must be zero terminated.
- void value(const Ch *val)
- {
- this->value(val, internal::measure(val));
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Related nodes access
-
- //! Gets node parent.
- //! \return Pointer to parent node, or 0 if there is no parent.
- xml_node<Ch> *parent() const
- {
- return m_parent;
- }
-
- protected:
-
- // Return empty string
- static Ch *nullstr()
- {
- static Ch zero = Ch('\0');
- return &zero;
- }
-
- Ch *m_name; // Name of node, or 0 if no name
- Ch *m_value; // Value of node, or 0 if no value
- std::size_t m_name_size; // Length of node name, or undefined of no name
- std::size_t m_value_size; // Length of node value, or undefined if no value
- xml_node<Ch> *m_parent; // Pointer to parent node, or 0 if none
-
- };
-
- //! Class representing attribute node of XML document.
- //! Each attribute has name and value strings, which are available through name() and value() functions (inherited from xml_base).
- //! Note that after parse, both name and value of attribute will point to interior of source text used for parsing.
- //! Thus, this text must persist in memory for the lifetime of attribute.
- //! \param Ch Character type to use.
- template<class Ch = char>
- class xml_attribute: public xml_base<Ch>
- {
-
- friend class xml_node<Ch>;
-
- public:
-
- ///////////////////////////////////////////////////////////////////////////
- // Construction & destruction
-
- //! Constructs an empty attribute with the specified type.
- //! Consider using memory_pool of appropriate xml_document if allocating attributes manually.
- xml_attribute()
- {
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Related nodes access
-
- //! Gets document of which attribute is a child.
- //! \return Pointer to document that contains this attribute, or 0 if there is no parent document.
- xml_document<Ch> *document() const
- {
- if (xml_node<Ch> *node = this->parent())
- {
- while (node->parent())
- node = node->parent();
- return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;
- }
- else
- return 0;
- }
-
- //! Gets previous attribute, optionally matching attribute name.
- //! \param n Name of attribute to find, or 0 to return previous attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found attribute, or 0 if not found.
- xml_attribute<Ch> *previous_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_attribute<Ch> *attribute = m_prev_attribute; attribute; attribute = attribute->m_prev_attribute)
- if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
- return attribute;
- return 0;
- }
- else
- return this->m_parent ? m_prev_attribute : 0;
- }
-
- //! Gets next attribute, optionally matching attribute name.
- //! \param n Name of attribute to find, or 0 to return next attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found attribute, or 0 if not found.
- xml_attribute<Ch> *next_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_attribute<Ch> *attribute = m_next_attribute; attribute; attribute = attribute->m_next_attribute)
- if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
- return attribute;
- return 0;
- }
- else
- return this->m_parent ? m_next_attribute : 0;
- }
-
- private:
-
- xml_attribute<Ch> *m_prev_attribute; // Pointer to previous sibling of attribute, or 0 if none; only valid if parent is non-zero
- xml_attribute<Ch> *m_next_attribute; // Pointer to next sibling of attribute, or 0 if none; only valid if parent is non-zero
-
- };
-
- ///////////////////////////////////////////////////////////////////////////
- // XML node
-
- //! Class representing a node of XML document.
- //! Each node may have associated name and value strings, which are available through name() and value() functions.
- //! Interpretation of name and value depends on type of the node.
- //! Type of node can be determined by using type() function.
- //! <br><br>
- //! Note that after parse, both name and value of node, if any, will point interior of source text used for parsing.
- //! Thus, this text must persist in the memory for the lifetime of node.
- //! \param Ch Character type to use.
- template<class Ch = char>
- class xml_node: public xml_base<Ch>
- {
-
- public:
-
- ///////////////////////////////////////////////////////////////////////////
- // Construction & destruction
-
- //! Constructs an empty node with the specified type.
- //! Consider using memory_pool of appropriate document to allocate nodes manually.
- //! \param t Type of node to construct.
- xml_node(node_type t)
- : m_type(t)
- , m_first_node(0)
- , m_first_attribute(0)
- {
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Node data access
-
- //! Gets type of node.
- //! \return Type of node.
- node_type type() const
- {
- return m_type;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Related nodes access
-
- //! Gets document of which node is a child.
- //! \return Pointer to document that contains this node, or 0 if there is no parent document.
- xml_document<Ch> *document() const
- {
- xml_node<Ch> *node = const_cast<xml_node<Ch> *>(this);
- while (node->parent())
- node = node->parent();
- return node->type() == node_document ? static_cast<xml_document<Ch> *>(node) : 0;
- }
-
- //! Gets first child node, optionally matching node name.
- //! \param n Name of child to find, or 0 to return first child regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found child, or 0 if not found.
- xml_node<Ch> *first_node(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_node<Ch> *child = m_first_node; child; child = child->next_sibling())
- if (internal::compare(child->name(), child->name_size(), n, nsize, case_sensitive))
- return child;
- return 0;
- }
- else
- return m_first_node;
- }
-
- //! Gets last child node, optionally matching node name.
- //! Behaviour is undefined if node has no children.
- //! Use first_node() to test if node has children.
- //! \param n Name of child to find, or 0 to return last child regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found child, or 0 if not found.
- xml_node<Ch> *last_node(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- assert(m_first_node); // Cannot query for last child if node has no children
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_node<Ch> *child = m_last_node; child; child = child->previous_sibling())
- if (internal::compare(child->name(), child->name_size(), n, nsize, case_sensitive))
- return child;
- return 0;
- }
- else
- return m_last_node;
- }
-
- //! Gets previous sibling node, optionally matching node name.
- //! Behaviour is undefined if node has no parent.
- //! Use parent() to test if node has a parent.
- //! \param n Name of sibling to find, or 0 to return previous sibling regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found sibling, or 0 if not found.
- xml_node<Ch> *previous_sibling(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- assert(this->m_parent); // Cannot query for siblings if node has no parent
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_node<Ch> *sibling = m_prev_sibling; sibling; sibling = sibling->m_prev_sibling)
- if (internal::compare(sibling->name(), sibling->name_size(), n, nsize, case_sensitive))
- return sibling;
- return 0;
- }
- else
- return m_prev_sibling;
- }
-
- //! Gets next sibling node, optionally matching node name.
- //! Behaviour is undefined if node has no parent.
- //! Use parent() to test if node has a parent.
- //! \param n Name of sibling to find, or 0 to return next sibling regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found sibling, or 0 if not found.
- xml_node<Ch> *next_sibling(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- assert(this->m_parent); // Cannot query for siblings if node has no parent
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_node<Ch> *sibling = m_next_sibling; sibling; sibling = sibling->m_next_sibling)
- if (internal::compare(sibling->name(), sibling->name_size(), n, nsize, case_sensitive))
- return sibling;
- return 0;
- }
- else
- return m_next_sibling;
- }
-
- //! Gets first attribute of node, optionally matching attribute name.
- //! \param n Name of attribute to find, or 0 to return first attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found attribute, or 0 if not found.
- xml_attribute<Ch> *first_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_attribute<Ch> *attribute = m_first_attribute; attribute; attribute = attribute->m_next_attribute)
- if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
- return attribute;
- return 0;
- }
- else
- return m_first_attribute;
- }
-
- //! Gets last attribute of node, optionally matching attribute name.
- //! \param n Name of attribute to find, or 0 to return last attribute regardless of its name; this string doesn't have to be zero-terminated if nsize is non-zero
- //! \param nsize Size of name, in characters, or 0 to have size calculated automatically from string
- //! \param case_sensitive Should name comparison be case-sensitive; non case-sensitive comparison works properly only for ASCII characters
- //! \return Pointer to found attribute, or 0 if not found.
- xml_attribute<Ch> *last_attribute(const Ch *n = 0, std::size_t nsize = 0, bool case_sensitive = true) const
- {
- if (n)
- {
- if (nsize == 0)
- nsize = internal::measure(n);
- for (xml_attribute<Ch> *attribute = m_last_attribute; attribute; attribute = attribute->m_prev_attribute)
- if (internal::compare(attribute->name(), attribute->name_size(), n, nsize, case_sensitive))
- return attribute;
- return 0;
- }
- else
- return m_first_attribute ? m_last_attribute : 0;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Node modification
-
- //! Sets type of node.
- //! \param t Type of node to set.
- void type(node_type t)
- {
- m_type = t;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // Node manipulation
-
- //! Prepends a new child node.
- //! The prepended child becomes the first child, and all existing children are moved one position back.
- //! \param child Node to prepend.
- void prepend_node(xml_node<Ch> *child)
- {
- assert(child && !child->parent() && child->type() != node_document);
- if (first_node())
- {
- child->m_next_sibling = m_first_node;
- m_first_node->m_prev_sibling = child;
- }
- else
- {
- child->m_next_sibling = 0;
- m_last_node = child;
- }
- m_first_node = child;
- child->m_parent = this;
- child->m_prev_sibling = 0;
- }
-
- //! Appends a new child node.
- //! The appended child becomes the last child.
- //! \param child Node to append.
- void append_node(xml_node<Ch> *child)
- {
- assert(child && !child->parent() && child->type() != node_document);
- if (first_node())
- {
- child->m_prev_sibling = m_last_node;
- m_last_node->m_next_sibling = child;
- }
- else
- {
- child->m_prev_sibling = 0;
- m_first_node = child;
- }
- m_last_node = child;
- child->m_parent = this;
- child->m_next_sibling = 0;
- }
-
- //! Inserts a new child node at specified place inside the node.
- //! All children after and including the specified node are moved one position back.
- //! \param where Place where to insert the child, or 0 to insert at the back.
- //! \param child Node to insert.
- void insert_node(xml_node<Ch> *where, xml_node<Ch> *child)
- {
- assert(!where || where->parent() == this);
- assert(child && !child->parent() && child->type() != node_document);
- if (where == m_first_node)
- prepend_node(child);
- else if (where == 0)
- append_node(child);
- else
- {
- child->m_prev_sibling = where->m_prev_sibling;
- child->m_next_sibling = where;
- where->m_prev_sibling->m_next_sibling = child;
- where->m_prev_sibling = child;
- child->m_parent = this;
- }
- }
-
- //! Removes first child node.
- //! If node has no children, behaviour is undefined.
- //! Use first_node() to test if node has children.
- void remove_first_node()
- {
- assert(first_node());
- xml_node<Ch> *child = m_first_node;
- m_first_node = child->m_next_sibling;
- if (child->m_next_sibling)
- child->m_next_sibling->m_prev_sibling = 0;
- else
- m_last_node = 0;
- child->m_parent = 0;
- }
-
- //! Removes last child of the node.
- //! If node has no children, behaviour is undefined.
- //! Use first_node() to test if node has children.
- void remove_last_node()
- {
- assert(first_node());
- xml_node<Ch> *child = m_last_node;
- if (child->m_prev_sibling)
- {
- m_last_node = child->m_prev_sibling;
- child->m_prev_sibling->m_next_sibling = 0;
- }
- else
- m_first_node = 0;
- child->m_parent = 0;
- }
-
- //! Removes specified child from the node
- // \param where Pointer to child to be removed.
- void remove_node(xml_node<Ch> *where)
- {
- assert(where && where->parent() == this);
- assert(first_node());
- if (where == m_first_node)
- remove_first_node();
- else if (where == m_last_node)
- remove_last_node();
- else
- {
- where->m_prev_sibling->m_next_sibling = where->m_next_sibling;
- where->m_next_sibling->m_prev_sibling = where->m_prev_sibling;
- where->m_parent = 0;
- }
- }
-
- //! Removes all child nodes (but not attributes).
- void remove_all_nodes()
- {
- for (xml_node<Ch> *node = first_node(); node; node = node->m_next_sibling)
- node->m_parent = 0;
- m_first_node = 0;
- }
-
- //! Prepends a new attribute to the node.
- //! \param attribute Attribute to prepend.
- void prepend_attribute(xml_attribute<Ch> *attribute)
- {
- assert(attribute && !attribute->parent());
- if (first_attribute())
- {
- attribute->m_next_attribute = m_first_attribute;
- m_first_attribute->m_prev_attribute = attribute;
- }
- else
- {
- attribute->m_next_attribute = 0;
- m_last_attribute = attribute;
- }
- m_first_attribute = attribute;
- attribute->m_parent = this;
- attribute->m_prev_attribute = 0;
- }
-
- //! Appends a new attribute to the node.
- //! \param attribute Attribute to append.
- void append_attribute(xml_attribute<Ch> *attribute)
- {
- assert(attribute && !attribute->parent());
- if (first_attribute())
- {
- attribute->m_prev_attribute = m_last_attribute;
- m_last_attribute->m_next_attribute = attribute;
- }
- else
- {
- attribute->m_prev_attribute = 0;
- m_first_attribute = attribute;
- }
- m_last_attribute = attribute;
- attribute->m_parent = this;
- attribute->m_next_attribute = 0;
- }
-
- //! Inserts a new attribute at specified place inside the node.
- //! All attributes after and including the specified attribute are moved one position back.
- //! \param where Place where to insert the attribute, or 0 to insert at the back.
- //! \param attribute Attribute to insert.
- void insert_attribute(xml_attribute<Ch> *where, xml_attribute<Ch> *attribute)
- {
- assert(!where || where->parent() == this);
- assert(attribute && !attribute->parent());
- if (where == m_first_attribute)
- prepend_attribute(attribute);
- else if (where == 0)
- append_attribute(attribute);
- else
- {
- attribute->m_prev_attribute = where->m_prev_attribute;
- attribute->m_next_attribute = where;
- where->m_prev_attribute->m_next_attribute = attribute;
- where->m_prev_attribute = attribute;
- attribute->m_parent = this;
- }
- }
-
- //! Removes first attribute of the node.
- //! If node has no attributes, behaviour is undefined.
- //! Use first_attribute() to test if node has attributes.
- void remove_first_attribute()
- {
- assert(first_attribute());
- xml_attribute<Ch> *attribute = m_first_attribute;
- if (attribute->m_next_attribute)
- {
- attribute->m_next_attribute->m_prev_attribute = 0;
- }
- else
- m_last_attribute = 0;
- attribute->m_parent = 0;
- m_first_attribute = attribute->m_next_attribute;
- }
-
- //! Removes last attribute of the node.
- //! If node has no attributes, behaviour is undefined.
- //! Use first_attribute() to test if node has attributes.
- void remove_last_attribute()
- {
- assert(first_attribute());
- xml_attribute<Ch> *attribute = m_last_attribute;
- if (attribute->m_prev_attribute)
- {
- attribute->m_prev_attribute->m_next_attribute = 0;
- m_last_attribute = attribute->m_prev_attribute;
- }
- else
- m_first_attribute = 0;
- attribute->m_parent = 0;
- }
-
- //! Removes specified attribute from node.
- //! \param where Pointer to attribute to be removed.
- void remove_attribute(xml_attribute<Ch> *where)
- {
- assert(first_attribute() && where->parent() == this);
- if (where == m_first_attribute)
- remove_first_attribute();
- else if (where == m_last_attribute)
- remove_last_attribute();
- else
- {
- where->m_prev_attribute->m_next_attribute = where->m_next_attribute;
- where->m_next_attribute->m_prev_attribute = where->m_prev_attribute;
- where->m_parent = 0;
- }
- }
-
- //! Removes all attributes of node.
- void remove_all_attributes()
- {
- for (xml_attribute<Ch> *attribute = first_attribute(); attribute; attribute = attribute->m_next_attribute)
- attribute->m_parent = 0;
- m_first_attribute = 0;
- }
-
- private:
-
- ///////////////////////////////////////////////////////////////////////////
- // Restrictions
-
- // No copying
- xml_node(const xml_node &);
- void operator =(const xml_node &);
-
- ///////////////////////////////////////////////////////////////////////////
- // Data members
-
- // Note that some of the pointers below have UNDEFINED values if certain other pointers are 0.
- // This is required for maximum performance, as it allows the parser to omit initialization of
- // unneded/redundant values.
- //
- // The rules are as follows:
- // 1. first_node and first_attribute contain valid pointers, or 0 if node has no children/attributes respectively
- // 2. last_node and last_attribute are valid only if node has at least one child/attribute respectively, otherwise they contain garbage
- // 3. prev_sibling and next_sibling are valid only if node has a parent, otherwise they contain garbage
-
- node_type m_type; // Type of node; always valid
- xml_node<Ch> *m_first_node; // Pointer to first child node, or 0 if none; always valid
- xml_node<Ch> *m_last_node; // Pointer to last child node, or 0 if none; this value is only valid if m_first_node is non-zero
- xml_attribute<Ch> *m_first_attribute; // Pointer to first attribute of node, or 0 if none; always valid
- xml_attribute<Ch> *m_last_attribute; // Pointer to last attribute of node, or 0 if none; this value is only valid if m_first_attribute is non-zero
- xml_node<Ch> *m_prev_sibling; // Pointer to previous sibling of node, or 0 if none; this value is only valid if m_parent is non-zero
- xml_node<Ch> *m_next_sibling; // Pointer to next sibling of node, or 0 if none; this value is only valid if m_parent is non-zero
-
- };
-
- ///////////////////////////////////////////////////////////////////////////
- // XML document
-
- //! This class represents root of the DOM hierarchy.
- //! It is also an xml_node and a memory_pool through public inheritance.
- //! Use parse() function to build a DOM tree from a zero-terminated XML text string.
- //! parse() function allocates memory for nodes and attributes by using functions of xml_document,
- //! which are inherited from memory_pool.
- //! To access root node of the document, use the document itself, as if it was an xml_node.
- //! \param Ch Character type to use.
- template<class Ch = char>
- class xml_document: public xml_node<Ch>, public memory_pool<Ch>
- {
-
- public:
-
- //! Constructs empty XML document
- xml_document()
- : xml_node<Ch>(node_document)
- {
- }
-
- //! Parses zero-terminated XML string according to given flags.
- //! Passed string will be modified by the parser, unless rapidxml::parse_non_destructive flag is used.
- //! The string must persist for the lifetime of the document.
- //! In case of error, rapidxml::parse_error exception will be thrown.
- //! <br><br>
- //! If you want to parse contents of a file, you must first load the file into the memory, and pass pointer to its beginning.
- //! Make sure that data is zero-terminated.
- //! <br><br>
- //! Document can be parsed into multiple times.
- //! Each new call to parse removes previous nodes and attributes (if any), but does not clear memory pool.
- //! \param text XML data to parse; pointer is non-const to denote fact that this data may be modified by the parser.
- template<int Flags>
- void parse(Ch *text)
- {
- assert(text);
-
- // Remove current contents
- this->remove_all_nodes();
- this->remove_all_attributes();
-
- // Parse BOM, if any
- parse_bom<Flags>(text);
-
- // Parse children
- while (1)
- {
- // Skip whitespace before node
- skip<whitespace_pred, Flags>(text);
- if (*text == 0)
- break;
-
- // Parse and append new child
- if (*text == Ch('<'))
- {
- ++text; // Skip '<'
- if (xml_node<Ch> *node = parse_node<Flags>(text))
- this->append_node(node);
- }
- else
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected <", text);
- }
-
- }
-
- //! Clears the document by deleting all nodes and clearing the memory pool.
- //! All nodes owned by document pool are destroyed.
- void clear()
- {
- this->remove_all_nodes();
- this->remove_all_attributes();
- memory_pool<Ch>::clear();
- }
-
- private:
-
- ///////////////////////////////////////////////////////////////////////
- // Internal character utility functions
-
- // Detect whitespace character
- struct whitespace_pred
- {
- static unsigned char test(Ch ch)
- {
- return internal::lookup_tables<0>::lookup_whitespace[internal::get_index(ch)];
- }
- };
-
- // Detect node name character
- struct node_name_pred
- {
- static unsigned char test(Ch ch)
- {
- return internal::lookup_tables<0>::lookup_node_name[internal::get_index(ch)];
- }
- };
-
- // Detect attribute name character
- struct attribute_name_pred
- {
- static unsigned char test(Ch ch)
- {
- return internal::lookup_tables<0>::lookup_attribute_name[internal::get_index(ch)];
- }
- };
-
- // Detect text character (PCDATA)
- struct text_pred
- {
- static unsigned char test(Ch ch)
- {
- return internal::lookup_tables<0>::lookup_text[internal::get_index(ch)];
- }
- };
-
- // Detect text character (PCDATA) that does not require processing
- struct text_pure_no_ws_pred
- {
- static unsigned char test(Ch ch)
- {
- return internal::lookup_tables<0>::lookup_text_pure_no_ws[internal::get_index(ch)];
- }
- };
-
- // Detect text character (PCDATA) that does not require processing
- struct text_pure_with_ws_pred
- {
- static unsigned char test(Ch ch)
- {
- return internal::lookup_tables<0>::lookup_text_pure_with_ws[internal::get_index(ch)];
- }
- };
-
- // Detect attribute value character
- template<Ch Quote>
- struct attribute_value_pred
- {
- static unsigned char test(Ch ch)
- {
- if (Quote == Ch('\''))
- return internal::lookup_tables<0>::lookup_attribute_data_1[internal::get_index(ch)];
- if (Quote == Ch('\"'))
- return internal::lookup_tables<0>::lookup_attribute_data_2[internal::get_index(ch)];
- return 0; // Should never be executed, to avoid warnings on Comeau
- }
- };
-
- // Detect attribute value character
- template<Ch Quote>
- struct attribute_value_pure_pred
- {
- static unsigned char test(Ch ch)
- {
- if (Quote == Ch('\''))
- return internal::lookup_tables<0>::lookup_attribute_data_1_pure[internal::get_index(ch)];
- if (Quote == Ch('\"'))
- return internal::lookup_tables<0>::lookup_attribute_data_2_pure[internal::get_index(ch)];
- return 0; // Should never be executed, to avoid warnings on Comeau
- }
- };
-
- // Insert coded character, using UTF8 or 8-bit ASCII
- template<int Flags>
- static void insert_coded_character(Ch *&text, unsigned long code)
- {
- if (Flags & parse_no_utf8)
- {
- // Insert 8-bit ASCII character
- // Todo: possibly verify that code is less than 256 and use replacement char otherwise?
- text[0] = static_cast<unsigned char>(code);
- text += 1;
- }
- else
- {
- // Insert UTF8 sequence
- if (code < 0x80) // 1 byte sequence
- {
- text[0] = static_cast<unsigned char>(code);
- text += 1;
- }
- else if (code < 0x800) // 2 byte sequence
- {
- text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
- text[0] = static_cast<unsigned char>(code | 0xC0);
- text += 2;
- }
- else if (code < 0x10000) // 3 byte sequence
- {
- text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
- text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
- text[0] = static_cast<unsigned char>(code | 0xE0);
- text += 3;
- }
- else if (code < 0x110000) // 4 byte sequence
- {
- text[3] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
- text[2] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
- text[1] = static_cast<unsigned char>((code | 0x80) & 0xBF); code >>= 6;
- text[0] = static_cast<unsigned char>(code | 0xF0);
- text += 4;
- }
- else // Invalid, only codes up to 0x10FFFF are allowed in Unicode
- {
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("invalid numeric character entity", text);
- }
- }
- }
-
- // Skip characters until predicate evaluates to true
- template<class StopPred, int Flags>
- static void skip(Ch *&text)
- {
- Ch *tmp = text;
- while (StopPred::test(*tmp))
- ++tmp;
- text = tmp;
- }
-
- // Skip characters until predicate evaluates to true while doing the following:
- // - replacing XML character entity references with proper characters (&apos; &amp; &quot; &lt; &gt; &#...;)
- // - condensing whitespace sequences to single space character
- template<class StopPred, class StopPredPure, int Flags>
- static Ch *skip_and_expand_character_refs(Ch *&text)
- {
- // If entity translation, whitespace condense and whitespace trimming is disabled, use plain skip
- if (Flags & parse_no_entity_translation &&
- !(Flags & parse_normalize_whitespace) &&
- !(Flags & parse_trim_whitespace))
- {
- skip<StopPred, Flags>(text);
- return text;
- }
-
- // Use simple skip until first modification is detected
- skip<StopPredPure, Flags>(text);
-
- // Use translation skip
- Ch *src = text;
- Ch *dest = src;
- while (StopPred::test(*src))
- {
- // If entity translation is enabled
- if (!(Flags & parse_no_entity_translation))
- {
- // Test if replacement is needed
- if (src[0] == Ch('&'))
- {
- switch (src[1])
- {
-
- // &amp; &apos;
- case Ch('a'):
- if (src[2] == Ch('m') && src[3] == Ch('p') && src[4] == Ch(';'))
- {
- *dest = Ch('&');
- ++dest;
- src += 5;
- continue;
- }
- if (src[2] == Ch('p') && src[3] == Ch('o') && src[4] == Ch('s') && src[5] == Ch(';'))
- {
- *dest = Ch('\'');
- ++dest;
- src += 6;
- continue;
- }
- break;
-
- // &quot;
- case Ch('q'):
- if (src[2] == Ch('u') && src[3] == Ch('o') && src[4] == Ch('t') && src[5] == Ch(';'))
- {
- *dest = Ch('"');
- ++dest;
- src += 6;
- continue;
- }
- break;
-
- // &gt;
- case Ch('g'):
- if (src[2] == Ch('t') && src[3] == Ch(';'))
- {
- *dest = Ch('>');
- ++dest;
- src += 4;
- continue;
- }
- break;
-
- // &lt;
- case Ch('l'):
- if (src[2] == Ch('t') && src[3] == Ch(';'))
- {
- *dest = Ch('<');
- ++dest;
- src += 4;
- continue;
- }
- break;
-
- // &#...; - assumes ASCII
- case Ch('#'):
- if (src[2] == Ch('x'))
- {
- unsigned long code = 0;
- src += 3; // Skip &#x
- while (1)
- {
- unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];
- if (digit == 0xFF)
- break;
- code = code * 16 + digit;
- ++src;
- }
- insert_coded_character<Flags>(dest, code); // Put character in output
- }
- else
- {
- unsigned long code = 0;
- src += 2; // Skip &#
- while (1)
- {
- unsigned char digit = internal::lookup_tables<0>::lookup_digits[static_cast<unsigned char>(*src)];
- if (digit == 0xFF)
- break;
- code = code * 10 + digit;
- ++src;
- }
- insert_coded_character<Flags>(dest, code); // Put character in output
- }
- if (*src == Ch(';'))
- ++src;
- else
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ;", src);
- continue;
-
- // Something else
- default:
- // Ignore, just copy '&' verbatim
- break;
-
- }
- }
- }
-
- // If whitespace condensing is enabled
- if (Flags & parse_normalize_whitespace)
- {
- // Test if condensing is needed
- if (whitespace_pred::test(*src))
- {
- *dest = Ch(' '); ++dest; // Put single space in dest
- ++src; // Skip first whitespace char
- // Skip remaining whitespace chars
- while (whitespace_pred::test(*src))
- ++src;
- continue;
- }
- }
-
- // No replacement, only copy character
- *dest++ = *src++;
-
- }
-
- // Return new end
- text = src;
- return dest;
-
- }
-
- ///////////////////////////////////////////////////////////////////////
- // Internal parsing functions
-
- // Parse BOM, if any
- template<int Flags>
- void parse_bom(Ch *&text)
- {
- // UTF-8?
- if (static_cast<unsigned char>(text[0]) == 0xEF &&
- static_cast<unsigned char>(text[1]) == 0xBB &&
- static_cast<unsigned char>(text[2]) == 0xBF)
- {
- text += 3; // Skip utf-8 bom
- }
- }
-
- // Parse XML declaration (<?xml...)
- template<int Flags>
- xml_node<Ch> *parse_xml_declaration(Ch *&text)
- {
- // If parsing of declaration is disabled
- if (!(Flags & parse_declaration_node))
- {
- // Skip until end of declaration
- while (text[0] != Ch('?') || text[1] != Ch('>'))
- {
- if (!text[0])
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- text += 2; // Skip '?>'
- return 0;
- }
-
- // Create declaration
- xml_node<Ch> *declaration = this->allocate_node(node_declaration);
-
- // Skip whitespace before attributes or ?>
- skip<whitespace_pred, Flags>(text);
-
- // Parse declaration attributes
- parse_node_attributes<Flags>(text, declaration);
-
- // Skip ?>
- if (text[0] != Ch('?') || text[1] != Ch('>'))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ?>", text);
- text += 2;
-
- return declaration;
- }
-
- // Parse XML comment (<!--...)
- template<int Flags>
- xml_node<Ch> *parse_comment(Ch *&text)
- {
- // If parsing of comments is disabled
- if (!(Flags & parse_comment_nodes))
- {
- // Skip until end of comment
- while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))
- {
- if (!text[0])
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- text += 3; // Skip '-->'
- return 0; // Do not produce comment node
- }
-
- // Remember value start
- Ch *val = text;
-
- // Skip until end of comment
- while (text[0] != Ch('-') || text[1] != Ch('-') || text[2] != Ch('>'))
- {
- if (!text[0])
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
-
- // Create comment node
- xml_node<Ch> *comment = this->allocate_node(node_comment);
- comment->value(val, text - val);
-
- // Place zero terminator after comment value
- if (!(Flags & parse_no_string_terminators))
- *text = Ch('\0');
-
- text += 3; // Skip '-->'
- return comment;
- }
-
- // Parse DOCTYPE
- template<int Flags>
- xml_node<Ch> *parse_doctype(Ch *&text)
- {
- // Remember value start
- Ch *val = text;
-
- // Skip to >
- while (*text != Ch('>'))
- {
- // Determine character type
- switch (*text)
- {
-
- // If '[' encountered, scan for matching ending ']' using naive algorithm with depth
- // This works for all W3C test files except for 2 most wicked
- case Ch('['):
- {
- ++text; // Skip '['
- int depth = 1;
- while (depth > 0)
- {
- switch (*text)
- {
- case Ch('['): ++depth; break;
- case Ch(']'): --depth; break;
- case 0: BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- default: break;
- }
- ++text;
- }
- break;
- }
-
- // Error on end of text
- case Ch('\0'):
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
-
- // Other character, skip it
- default:
- ++text;
-
- }
- }
-
- // If DOCTYPE nodes enabled
- if (Flags & parse_doctype_node)
- {
- // Create a new doctype node
- xml_node<Ch> *doctype = this->allocate_node(node_doctype);
- doctype->value(val, text - val);
-
- // Place zero terminator after value
- if (!(Flags & parse_no_string_terminators))
- *text = Ch('\0');
-
- text += 1; // skip '>'
- return doctype;
- }
- else
- {
- text += 1; // skip '>'
- return 0;
- }
-
- }
-
- // Parse PI
- template<int Flags>
- xml_node<Ch> *parse_pi(Ch *&text)
- {
- // If creation of PI nodes is enabled
- if (Flags & parse_pi_nodes)
- {
- // Create pi node
- xml_node<Ch> *pi = this->allocate_node(node_pi);
-
- // Extract PI target name
- Ch *n = text;
- skip<node_name_pred, Flags>(text);
- if (text == n)
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected PI target", text);
- pi->name(n, text - n);
-
- // Skip whitespace between pi target and pi
- skip<whitespace_pred, Flags>(text);
-
- // Remember start of pi
- Ch *val = text;
-
- // Skip to '?>'
- while (text[0] != Ch('?') || text[1] != Ch('>'))
- {
- if (*text == Ch('\0'))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
-
- // Set pi value (verbatim, no entity expansion or whitespace normalization)
- pi->value(val, text - val);
-
- // Place zero terminator after name and value
- if (!(Flags & parse_no_string_terminators))
- {
- pi->name()[pi->name_size()] = Ch('\0');
- pi->value()[pi->value_size()] = Ch('\0');
- }
-
- text += 2; // Skip '?>'
- return pi;
- }
- else
- {
- // Skip to '?>'
- while (text[0] != Ch('?') || text[1] != Ch('>'))
- {
- if (*text == Ch('\0'))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- text += 2; // Skip '?>'
- return 0;
- }
- }
-
- // Parse and append data
- // Return character that ends data.
- // This is necessary because this character might have been overwritten by a terminating 0
- template<int Flags>
- Ch parse_and_append_data(xml_node<Ch> *node, Ch *&text, Ch *contents_start)
- {
- // Backup to contents start if whitespace trimming is disabled
- if (!(Flags & parse_trim_whitespace))
- text = contents_start;
-
- // Skip until end of data
- Ch *val = text, *end;
- if (Flags & parse_normalize_whitespace)
- end = skip_and_expand_character_refs<text_pred, text_pure_with_ws_pred, Flags>(text);
- else
- end = skip_and_expand_character_refs<text_pred, text_pure_no_ws_pred, Flags>(text);
-
- // Trim trailing whitespace if flag is set; leading was already trimmed by whitespace skip after >
- if (Flags & parse_trim_whitespace)
- {
- if (Flags & parse_normalize_whitespace)
- {
- // Whitespace is already condensed to single space characters by skipping function, so just trim 1 char off the end
- if (*(end - 1) == Ch(' '))
- --end;
- }
- else
- {
- // Backup until non-whitespace character is found
- while (whitespace_pred::test(*(end - 1)))
- --end;
- }
- }
-
- // If characters are still left between end and value (this test is only necessary if normalization is enabled)
- // Create new data node
- if (!(Flags & parse_no_data_nodes))
- {
- xml_node<Ch> *data = this->allocate_node(node_data);
- data->value(val, end - val);
- node->append_node(data);
- }
-
- // Add data to parent node if no data exists yet
- if (!(Flags & parse_no_element_values))
- if (*node->value() == Ch('\0'))
- node->value(val, end - val);
-
- // Place zero terminator after value
- if (!(Flags & parse_no_string_terminators))
- {
- Ch ch = *text;
- *end = Ch('\0');
- return ch; // Return character that ends data; this is required because zero terminator overwritten it
- }
-
- // Return character that ends data
- return *text;
- }
-
- // Parse CDATA
- template<int Flags>
- xml_node<Ch> *parse_cdata(Ch *&text)
- {
- // If CDATA is disabled
- if (Flags & parse_no_data_nodes)
- {
- // Skip until end of cdata
- while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
- {
- if (!text[0])
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- text += 3; // Skip ]]>
- return 0; // Do not produce CDATA node
- }
-
- // Skip until end of cdata
- Ch *val = text;
- while (text[0] != Ch(']') || text[1] != Ch(']') || text[2] != Ch('>'))
- {
- if (!text[0])
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
-
- // Create new cdata node
- xml_node<Ch> *cdata = this->allocate_node(node_cdata);
- cdata->value(val, text - val);
-
- // Place zero terminator after value
- if (!(Flags & parse_no_string_terminators))
- *text = Ch('\0');
-
- text += 3; // Skip ]]>
- return cdata;
- }
-
- // Parse element node
- template<int Flags>
- xml_node<Ch> *parse_element(Ch *&text)
- {
- // Create element node
- xml_node<Ch> *element = this->allocate_node(node_element);
-
- // Extract element name
- Ch *n = text;
- skip<node_name_pred, Flags>(text);
- if (text == n)
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected element name", text);
- element->name(n, text - n);
-
- // Skip whitespace between element name and attributes or >
- skip<whitespace_pred, Flags>(text);
-
- // Parse attributes, if any
- parse_node_attributes<Flags>(text, element);
-
- // Determine ending type
- if (*text == Ch('>'))
- {
- ++text;
- parse_node_contents<Flags>(text, element);
- }
- else if (*text == Ch('/'))
- {
- ++text;
- if (*text != Ch('>'))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected >", text);
- ++text;
- }
- else
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected >", text);
-
- // Place zero terminator after name
- if (!(Flags & parse_no_string_terminators))
- element->name()[element->name_size()] = Ch('\0');
-
- // Return parsed element
- return element;
- }
-
- // Determine node type, and parse it
- template<int Flags>
- xml_node<Ch> *parse_node(Ch *&text)
- {
- // Parse proper node type
- switch (text[0])
- {
-
- // <...
- default:
- // Parse and append element node
- return parse_element<Flags>(text);
-
- // <?...
- case Ch('?'):
- ++text; // Skip ?
- if ((text[0] == Ch('x') || text[0] == Ch('X')) &&
- (text[1] == Ch('m') || text[1] == Ch('M')) &&
- (text[2] == Ch('l') || text[2] == Ch('L')) &&
- whitespace_pred::test(text[3]))
- {
- // '<?xml ' - xml declaration
- text += 4; // Skip 'xml '
- return parse_xml_declaration<Flags>(text);
- }
- else
- {
- // Parse PI
- return parse_pi<Flags>(text);
- }
-
- // <!...
- case Ch('!'):
-
- // Parse proper subset of <! node
- switch (text[1])
- {
-
- // <!-
- case Ch('-'):
- if (text[2] == Ch('-'))
- {
- // '<!--' - xml comment
- text += 3; // Skip '!--'
- return parse_comment<Flags>(text);
- }
- break;
-
- // <![
- case Ch('['):
- if (text[2] == Ch('C') && text[3] == Ch('D') && text[4] == Ch('A') &&
- text[5] == Ch('T') && text[6] == Ch('A') && text[7] == Ch('['))
- {
- // '<![CDATA[' - cdata
- text += 8; // Skip '![CDATA['
- return parse_cdata<Flags>(text);
- }
- break;
-
- // <!D
- case Ch('D'):
- if (text[2] == Ch('O') && text[3] == Ch('C') && text[4] == Ch('T') &&
- text[5] == Ch('Y') && text[6] == Ch('P') && text[7] == Ch('E') &&
- whitespace_pred::test(text[8]))
- {
- // '<!DOCTYPE ' - doctype
- text += 9; // skip '!DOCTYPE '
- return parse_doctype<Flags>(text);
- }
- break;
-
- default: break;
-
- } // switch
-
- // Attempt to skip other, unrecognized node types starting with <!
- ++text; // Skip !
- while (*text != Ch('>'))
- {
- if (*text == 0)
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
- ++text;
- }
- ++text; // Skip '>'
- return 0; // No node recognized
-
- }
- }
-
- // Parse contents of the node - children, data etc.
- template<int Flags>
- void parse_node_contents(Ch *&text, xml_node<Ch> *node)
- {
- // For all children and text
- while (1)
- {
- // Skip whitespace between > and node contents
- Ch *contents_start = text; // Store start of node contents before whitespace is skipped
- if (Flags & parse_trim_whitespace)
- skip<whitespace_pred, Flags>(text);
- Ch next_char = *text;
-
- // After data nodes, instead of continuing the loop, control jumps here.
- // This is because zero termination inside parse_and_append_data() function
- // would wreak havoc with the above code.
- // Also, skipping whitespace after data nodes is unnecessary.
- after_data_node:
-
- // Determine what comes next: node closing, child node, data node, or 0?
- switch (next_char)
- {
-
- // Node closing or child node
- case Ch('<'):
- if (text[1] == Ch('/'))
- {
- // Node closing
- text += 2; // Skip '</'
- if (Flags & parse_validate_closing_tags)
- {
- // Skip and validate closing tag name
- Ch *closing_name = text;
- skip<node_name_pred, Flags>(text);
- if (!internal::compare(node->name(), node->name_size(), closing_name, text - closing_name, true))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("invalid closing tag name", text);
- }
- else
- {
- // No validation, just skip name
- skip<node_name_pred, Flags>(text);
- }
- // Skip remaining whitespace after node name
- skip<whitespace_pred, Flags>(text);
- if (*text != Ch('>'))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected >", text);
- ++text; // Skip '>'
- return; // Node closed, finished parsing contents
- }
- else
- {
- // Child node
- ++text; // Skip '<'
- if (xml_node<Ch> *child = parse_node<Flags>(text))
- node->append_node(child);
- }
- break;
-
- // End of data - error
- case Ch('\0'):
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("unexpected end of data", text);
-
- // Data node
- default:
- next_char = parse_and_append_data<Flags>(node, text, contents_start);
- goto after_data_node; // Bypass regular processing after data nodes
-
- }
- }
- }
-
- // Parse XML attributes of the node
- template<int Flags>
- void parse_node_attributes(Ch *&text, xml_node<Ch> *node)
- {
- // For all attributes
- while (attribute_name_pred::test(*text))
- {
- // Extract attribute name
- Ch *n = text;
- ++text; // Skip first character of attribute name
- skip<attribute_name_pred, Flags>(text);
- if (text == n)
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected attribute name", n);
-
- // Create new attribute
- xml_attribute<Ch> *attribute = this->allocate_attribute();
- attribute->name(n, text - n);
- node->append_attribute(attribute);
-
- // Skip whitespace after attribute name
- skip<whitespace_pred, Flags>(text);
-
- // Skip =
- if (*text != Ch('='))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected =", text);
- ++text;
-
- // Add terminating zero after name
- if (!(Flags & parse_no_string_terminators))
- attribute->name()[attribute->name_size()] = 0;
-
- // Skip whitespace after =
- skip<whitespace_pred, Flags>(text);
-
- // Skip quote and remember if it was ' or "
- Ch quote = *text;
- if (quote != Ch('\'') && quote != Ch('"'))
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ' or \"", text);
- ++text;
-
- // Extract attribute value and expand char refs in it
- Ch *val = text, *end;
- const int AttFlags = Flags & ~parse_normalize_whitespace; // No whitespace normalization in attributes
- if (quote == Ch('\''))
- end = skip_and_expand_character_refs<attribute_value_pred<Ch('\'')>, attribute_value_pure_pred<Ch('\'')>, AttFlags>(text);
- else
- end = skip_and_expand_character_refs<attribute_value_pred<Ch('"')>, attribute_value_pure_pred<Ch('"')>, AttFlags>(text);
-
- // Set attribute value
- attribute->value(val, end - val);
-
- // Make sure that end quote is present
- if (*text != quote)
- BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR("expected ' or \"", text);
- ++text; // Skip quote
-
- // Add terminating zero after value
- if (!(Flags & parse_no_string_terminators))
- attribute->value()[attribute->value_size()] = 0;
-
- // Skip whitespace after attribute value
- skip<whitespace_pred, Flags>(text);
- }
- }
-
- };
-
- //! \cond internal
- namespace internal
- {
-
- // Whitespace (space \n \r \t)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_whitespace[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, // 0
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 2
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 5
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 7
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // A
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // B
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // C
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // D
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // E
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // F
- };
-
- // Node name (anything but space \n \r \t / > ? \0)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_node_name[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Text (i.e. PCDATA) (anything but < \0)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_text[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Text (i.e. PCDATA) that does not require processing when ws normalization is disabled
- // (anything but < \0 &)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_text_pure_no_ws[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Text (i.e. PCDATA) that does not require processing when ws normalizationis is enabled
- // (anything but < \0 & space \n \r \t)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_text_pure_with_ws[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute name (anything but space \n \r \t / < > = ? ! \0)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_attribute_name[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with single quote (anything but ' \0)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with single quote that does not require processing (anything but ' \0 &)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_attribute_data_1_pure[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with double quote (anything but " \0)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Attribute data with double quote that does not require processing (anything but " \0 &)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_attribute_data_2_pure[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 0
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 1
- 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 3
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 4
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 5
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 6
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 7
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 8
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 9
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // A
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // B
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // C
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // D
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // E
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // F
- };
-
- // Digits (dec and hex, 255 denotes end of numeric character reference)
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_digits[256] =
- {
- // 0 1 2 3 4 5 6 7 8 9 A B C D E F
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 0
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 1
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 2
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,255,255,255,255,255,255, // 3
- 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 4
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 5
- 255, 10, 11, 12, 13, 14, 15,255,255,255,255,255,255,255,255,255, // 6
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 7
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 8
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // 9
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // A
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // B
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // C
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // D
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, // E
- 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 // F
- };
-
- // Upper case conversion
- template<int Dummy>
- const unsigned char lookup_tables<Dummy>::lookup_upcase[256] =
- {
- // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A B C D E F
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, // 0
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, // 1
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, // 2
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, // 3
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 4
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, // 5
- 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, // 6
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 123,124,125,126,127, // 7
- 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, // 8
- 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159, // 9
- 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, // A
- 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191, // B
- 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207, // C
- 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223, // D
- 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239, // E
- 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255 // F
- };
- }
- //! \endcond
-
-}}}}
-
-// Undefine internal macros
-#undef BOOST_PROPERTY_TREE_RAPIDXML_PARSE_ERROR
-
-// On MSVC, restore warnings state
-#ifdef _MSC_VER
- #pragma warning(pop)
-#endif
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_error.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_error.hpp
deleted file mode 100644
index c79835c..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_error.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_ERROR_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_ERROR_HPP_INCLUDED
-
-#include <boost/property_tree/detail/file_parser_error.hpp>
-#include <string>
-
-namespace boost { namespace property_tree { namespace xml_parser
-{
-
- //! Xml parser error
- class xml_parser_error: public file_parser_error
- {
- public:
- xml_parser_error(const std::string &msg,
- const std::string &file,
- unsigned long l):
- file_parser_error(msg, file, l)
- {
- }
- };
-
-} } }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_flags.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_flags.hpp
deleted file mode 100644
index 9340fe2..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_flags.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_FLAGS_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_FLAGS_HPP_INCLUDED
-
-namespace boost { namespace property_tree { namespace xml_parser
-{
-
- /// Text elements should be put in separate keys,
- /// not concatenated in parent data.
- static const int no_concat_text = 0x1;
- /// Comments should be omitted.
- static const int no_comments = 0x2;
- /// Whitespace should be collapsed and trimmed.
- static const int trim_whitespace = 0x4;
-
- inline bool validate_flags(int flags)
- {
- return (flags & ~(no_concat_text | no_comments | trim_whitespace)) == 0;
- }
-
-} } }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp
deleted file mode 100644
index acec34d9..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_read_rapidxml.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2007 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_READ_RAPIDXML_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_READ_RAPIDXML_HPP_INCLUDED
-
-#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/detail/xml_parser_error.hpp>
-#include <boost/property_tree/detail/xml_parser_flags.hpp>
-#include <boost/property_tree/detail/xml_parser_utils.hpp>
-#include <boost/property_tree/detail/rapidxml.hpp>
-#include <vector>
-
-namespace boost { namespace property_tree { namespace xml_parser
-{
-
- template<class Ptree, class Ch>
- void read_xml_node(detail::rapidxml::xml_node<Ch> *node,
- Ptree &pt, int flags)
- {
- using namespace detail::rapidxml;
- switch (node->type())
- {
- // Element nodes
- case node_element:
- {
- // Create node
- Ptree &pt_node = pt.push_back(std::make_pair(node->name(),
- Ptree()))->second;
-
- // Copy attributes
- if (node->first_attribute())
- {
- Ptree &pt_attr_root = pt_node.push_back(
- std::make_pair(xmlattr<Ch>(), Ptree()))->second;
- for (xml_attribute<Ch> *attr = node->first_attribute();
- attr; attr = attr->next_attribute())
- {
- Ptree &pt_attr = pt_attr_root.push_back(
- std::make_pair(attr->name(), Ptree()))->second;
- pt_attr.data() = attr->value();
- }
- }
-
- // Copy children
- for (xml_node<Ch> *child = node->first_node();
- child; child = child->next_sibling())
- read_xml_node(child, pt_node, flags);
- }
- break;
-
- // Data nodes
- case node_data:
- case node_cdata:
- {
- if (flags & no_concat_text)
- pt.push_back(std::make_pair(xmltext<Ch>(),
- Ptree(node->value())));
- else
- pt.data() += node->value();
- }
- break;
-
- // Comment nodes
- case node_comment:
- {
- if (!(flags & no_comments))
- pt.push_back(std::make_pair(xmlcomment<Ch>(),
- Ptree(node->value())));
- }
- break;
-
- default:
- // Skip other node types
- break;
- }
- }
-
- template<class Ptree>
- void read_xml_internal(std::basic_istream<
- typename Ptree::key_type::value_type> &stream,
- Ptree &pt,
- int flags,
- const std::string &filename)
- {
- typedef typename Ptree::key_type::value_type Ch;
- using namespace detail::rapidxml;
-
- // Load data into vector
- stream.unsetf(std::ios::skipws);
- std::vector<Ch> v(std::istreambuf_iterator<Ch>(stream.rdbuf()),
- std::istreambuf_iterator<Ch>());
- if (!stream.good())
- BOOST_PROPERTY_TREE_THROW(
- xml_parser_error("read error", filename, 0));
- v.push_back(0); // zero-terminate
-
- try {
- // Parse using appropriate flags
- const int f_tws = parse_normalize_whitespace
- | parse_trim_whitespace;
- const int f_c = parse_comment_nodes;
- // Some compilers don't like the bitwise or in the template arg.
- const int f_tws_c = parse_normalize_whitespace
- | parse_trim_whitespace
- | parse_comment_nodes;
- xml_document<Ch> doc;
- if (flags & no_comments) {
- if (flags & trim_whitespace)
- doc.BOOST_NESTED_TEMPLATE parse<f_tws>(&v.front());
- else
- doc.BOOST_NESTED_TEMPLATE parse<0>(&v.front());
- } else {
- if (flags & trim_whitespace)
- doc.BOOST_NESTED_TEMPLATE parse<f_tws_c>(&v.front());
- else
- doc.BOOST_NESTED_TEMPLATE parse<f_c>(&v.front());
- }
-
- // Create ptree from nodes
- Ptree local;
- for (xml_node<Ch> *child = doc.first_node();
- child; child = child->next_sibling())
- read_xml_node(child, local, flags);
-
- // Swap local and result ptrees
- pt.swap(local);
- } catch (parse_error &e) {
- long line = static_cast<long>(
- std::count(&v.front(), e.where<Ch>(), Ch('\n')) + 1);
- BOOST_PROPERTY_TREE_THROW(
- xml_parser_error(e.what(), filename, line));
- }
- }
-
-} } }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_utils.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_utils.hpp
deleted file mode 100644
index 7c8a6e1..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_utils.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_UTILS_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_UTILS_HPP_INCLUDED
-
-#include <boost/property_tree/detail/ptree_utils.hpp>
-#include <boost/property_tree/detail/xml_parser_error.hpp>
-#include <boost/property_tree/detail/xml_parser_writer_settings.hpp>
-#include <string>
-#include <algorithm>
-#include <locale>
-
-namespace boost { namespace property_tree { namespace xml_parser
-{
-
- template<class Ch>
- std::basic_string<Ch> condense(const std::basic_string<Ch> &s)
- {
- std::basic_string<Ch> r;
- std::locale loc;
- bool space = false;
- typename std::basic_string<Ch>::const_iterator end = s.end();
- for (typename std::basic_string<Ch>::const_iterator it = s.begin();
- it != end; ++it)
- {
- if (isspace(*it, loc) || *it == Ch('\n'))
- {
- if (!space)
- r += Ch(' '), space = true;
- }
- else
- r += *it, space = false;
- }
- return r;
- }
-
- template<class Ch>
- std::basic_string<Ch> encode_char_entities(const std::basic_string<Ch> &s)
- {
- // Don't do anything for empty strings.
- if(s.empty()) return s;
-
- typedef typename std::basic_string<Ch> Str;
- Str r;
- // To properly round-trip spaces and not uglify the XML beyond
- // recognition, we have to encode them IF the text contains only spaces.
- Str sp(1, Ch(' '));
- if(s.find_first_not_of(sp) == Str::npos) {
- // The first will suffice.
- r = detail::widen<Ch>("&#32;");
- r += Str(s.size() - 1, Ch(' '));
- } else {
- typename Str::const_iterator end = s.end();
- for (typename Str::const_iterator it = s.begin(); it != end; ++it)
- {
- switch (*it)
- {
- case Ch('<'): r += detail::widen<Ch>("&lt;"); break;
- case Ch('>'): r += detail::widen<Ch>("&gt;"); break;
- case Ch('&'): r += detail::widen<Ch>("&amp;"); break;
- case Ch('"'): r += detail::widen<Ch>("&quot;"); break;
- case Ch('\''): r += detail::widen<Ch>("&apos;"); break;
- default: r += *it; break;
- }
- }
- }
- return r;
- }
-
- template<class Ch>
- std::basic_string<Ch> decode_char_entities(const std::basic_string<Ch> &s)
- {
- typedef typename std::basic_string<Ch> Str;
- Str r;
- typename Str::const_iterator end = s.end();
- for (typename Str::const_iterator it = s.begin(); it != end; ++it)
- {
- if (*it == Ch('&'))
- {
- typename Str::const_iterator semicolon = std::find(it + 1, end, Ch(';'));
- if (semicolon == end)
- BOOST_PROPERTY_TREE_THROW(xml_parser_error("invalid character entity", "", 0));
- Str ent(it + 1, semicolon);
- if (ent == detail::widen<Ch>("lt")) r += Ch('<');
- else if (ent == detail::widen<Ch>("gt")) r += Ch('>');
- else if (ent == detail::widen<Ch>("amp")) r += Ch('&');
- else if (ent == detail::widen<Ch>("quot")) r += Ch('"');
- else if (ent == detail::widen<Ch>("apos")) r += Ch('\'');
- else
- BOOST_PROPERTY_TREE_THROW(xml_parser_error("invalid character entity", "", 0));
- it = semicolon;
- }
- else
- r += *it;
- }
- return r;
- }
-
- template<class Ch>
- const std::basic_string<Ch> &xmldecl()
- {
- static std::basic_string<Ch> s = detail::widen<Ch>("<?xml>");
- return s;
- }
-
- template<class Ch>
- const std::basic_string<Ch> &xmlattr()
- {
- static std::basic_string<Ch> s = detail::widen<Ch>("<xmlattr>");
- return s;
- }
-
- template<class Ch>
- const std::basic_string<Ch> &xmlcomment()
- {
- static std::basic_string<Ch> s = detail::widen<Ch>("<xmlcomment>");
- return s;
- }
-
- template<class Ch>
- const std::basic_string<Ch> &xmltext()
- {
- static std::basic_string<Ch> s = detail::widen<Ch>("<xmltext>");
- return s;
- }
-
-} } }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_write.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_write.hpp
deleted file mode 100644
index 614854e..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_write.hpp
+++ /dev/null
@@ -1,194 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITE_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITE_HPP_INCLUDED
-
-#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/detail/xml_parser_utils.hpp>
-#include <string>
-#include <ostream>
-#include <iomanip>
-
-namespace boost { namespace property_tree { namespace xml_parser
-{
- template<class Ch>
- void write_xml_indent(std::basic_ostream<Ch> &stream,
- int indent,
- const xml_writer_settings<Ch> & settings
- )
- {
- stream << std::basic_string<Ch>(indent * settings.indent_count, settings.indent_char);
- }
-
- template<class Ch>
- void write_xml_comment(std::basic_ostream<Ch> &stream,
- const std::basic_string<Ch> &s,
- int indent,
- bool separate_line,
- const xml_writer_settings<Ch> & settings
- )
- {
- typedef typename std::basic_string<Ch> Str;
- if (separate_line)
- write_xml_indent(stream,indent,settings);
- stream << Ch('<') << Ch('!') << Ch('-') << Ch('-');
- stream << s;
- stream << Ch('-') << Ch('-') << Ch('>');
- if (separate_line)
- stream << Ch('\n');
- }
-
- template<class Ch>
- void write_xml_text(std::basic_ostream<Ch> &stream,
- const std::basic_string<Ch> &s,
- int indent,
- bool separate_line,
- const xml_writer_settings<Ch> & settings
- )
- {
- if (separate_line)
- write_xml_indent(stream,indent,settings);
- stream << encode_char_entities(s);
- if (separate_line)
- stream << Ch('\n');
- }
-
- template<class Ptree>
- void write_xml_element(std::basic_ostream<typename Ptree::key_type::value_type> &stream,
- const std::basic_string<typename Ptree::key_type::value_type> &key,
- const Ptree &pt,
- int indent,
- const xml_writer_settings<typename Ptree::key_type::value_type> & settings)
- {
-
- typedef typename Ptree::key_type::value_type Ch;
- typedef typename std::basic_string<Ch> Str;
- typedef typename Ptree::const_iterator It;
-
- bool want_pretty = settings.indent_count > 0;
- // Find if elements present
- bool has_elements = false;
- bool has_attrs_only = pt.data().empty();
- for (It it = pt.begin(), end = pt.end(); it != end; ++it)
- {
- if (it->first != xmlattr<Ch>() )
- {
- has_attrs_only = false;
- if (it->first != xmltext<Ch>())
- {
- has_elements = true;
- break;
- }
- }
- }
-
- // Write element
- if (pt.data().empty() && pt.empty()) // Empty key
- {
- if (indent >= 0)
- {
- write_xml_indent(stream,indent,settings);
- stream << Ch('<') << key <<
- Ch('/') << Ch('>');
- if (want_pretty)
- stream << Ch('\n');
- }
- }
- else // Nonempty key
- {
-
- // Write opening tag, attributes and data
- if (indent >= 0)
- {
-
- // Write opening brace and key
- write_xml_indent(stream,indent,settings);
- stream << Ch('<') << key;
-
- // Write attributes
- if (optional<const Ptree &> attribs = pt.get_child_optional(xmlattr<Ch>()))
- for (It it = attribs.get().begin(); it != attribs.get().end(); ++it)
- stream << Ch(' ') << it->first << Ch('=') <<
- Ch('"') << it->second.template get_value<std::basic_string<Ch> >() << Ch('"');
-
- if ( has_attrs_only )
- {
- // Write closing brace
- stream << Ch('/') << Ch('>');
- if (want_pretty)
- stream << Ch('\n');
- }
- else
- {
- // Write closing brace
- stream << Ch('>');
-
- // Break line if needed and if we want pretty-printing
- if (has_elements && want_pretty)
- stream << Ch('\n');
- }
- }
-
- // Write data text, if present
- if (!pt.data().empty())
- write_xml_text(stream,
- pt.template get_value<std::basic_string<Ch> >(),
- indent + 1, has_elements && want_pretty, settings);
-
- // Write elements, comments and texts
- for (It it = pt.begin(); it != pt.end(); ++it)
- {
- if (it->first == xmlattr<Ch>())
- continue;
- else if (it->first == xmlcomment<Ch>())
- write_xml_comment(stream,
- it->second.template get_value<std::basic_string<Ch> >(),
- indent + 1, want_pretty, settings);
- else if (it->first == xmltext<Ch>())
- write_xml_text(stream,
- it->second.template get_value<std::basic_string<Ch> >(),
- indent + 1, has_elements && want_pretty, settings);
- else
- write_xml_element(stream, it->first, it->second,
- indent + 1, settings);
- }
-
- // Write closing tag
- if (indent >= 0 && !has_attrs_only)
- {
- if (has_elements)
- write_xml_indent(stream,indent,settings);
- stream << Ch('<') << Ch('/') << key << Ch('>');
- if (want_pretty)
- stream << Ch('\n');
- }
-
- }
- }
-
- template<class Ptree>
- void write_xml_internal(std::basic_ostream<typename Ptree::key_type::value_type> &stream,
- const Ptree &pt,
- const std::string &filename,
- const xml_writer_settings<typename Ptree::key_type::value_type> & settings)
- {
- typedef typename Ptree::key_type::value_type Ch;
- typedef typename std::basic_string<Ch> Str;
- stream << detail::widen<Ch>("<?xml version=\"1.0\" encoding=\"")
- << settings.encoding
- << detail::widen<Ch>("\"?>\n");
- write_xml_element(stream, Str(), pt, -1, settings);
- if (!stream)
- BOOST_PROPERTY_TREE_THROW(xml_parser_error("write error", filename, 0));
- }
-
-} } }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_writer_settings.hpp b/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_writer_settings.hpp
deleted file mode 100644
index f22d85e..0000000
--- a/3rdParty/Boost/src/boost/property_tree/detail/xml_parser_writer_settings.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2007 Marcin Kalicinski
-// Copyright (C) 2007 Alexey Baskakov
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED
-
-#include <string>
-#include <boost/property_tree/detail/ptree_utils.hpp>
-
-namespace boost { namespace property_tree { namespace xml_parser
-{
-
- // Naively convert narrow string to another character type
- template<class Ch>
- std::basic_string<Ch> widen(const char *text)
- {
- std::basic_string<Ch> result;
- while (*text)
- {
- result += Ch(*text);
- ++text;
- }
- return result;
- }
-
- //! Xml writer settings. The default settings lead to no pretty printing.
- template<class Ch>
- class xml_writer_settings
- {
- public:
- xml_writer_settings(Ch inchar = Ch(' '),
- typename std::basic_string<Ch>::size_type incount = 0,
- const std::basic_string<Ch> &enc = widen<Ch>("utf-8"))
- : indent_char(inchar)
- , indent_count(incount)
- , encoding(enc)
- {
- }
-
- Ch indent_char;
- typename std::basic_string<Ch>::size_type indent_count;
- std::basic_string<Ch> encoding;
- };
-
- template <class Ch>
- xml_writer_settings<Ch> xml_writer_make_settings(Ch indent_char = Ch(' '),
- typename std::basic_string<Ch>::size_type indent_count = 0,
- const std::basic_string<Ch> &encoding = widen<Ch>("utf-8"))
- {
- return xml_writer_settings<Ch>(indent_char, indent_count, encoding);
- }
-
-} } }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/exceptions.hpp b/3rdParty/Boost/src/boost/property_tree/exceptions.hpp
deleted file mode 100644
index 42e2cbd..0000000
--- a/3rdParty/Boost/src/boost/property_tree/exceptions.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-
-#ifndef BOOST_PROPERTY_TREE_EXCEPTIONS_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_EXCEPTIONS_HPP_INCLUDED
-
-#include <boost/property_tree/ptree_fwd.hpp>
-
-#include <boost/any.hpp>
-#include <string>
-#include <stdexcept>
-
-namespace boost { namespace property_tree
-{
-
- /// Base class for all property tree errors. Derives from
- /// @c std::runtime_error. Call member function @c what to get human
- /// readable message associated with the error.
- class ptree_error : public std::runtime_error
- {
- public:
- /// Instantiate a ptree_error instance with the given message.
- /// @param what The message to associate with this error.
- ptree_error(const std::string &what);
-
- ~ptree_error() throw();
- };
-
-
- /// Error indicating that translation from given value to the property tree
- /// data_type (or vice versa) failed. Derives from ptree_error.
- class ptree_bad_data : public ptree_error
- {
- public:
- /// Instantiate a ptree_bad_data instance with the given message and
- /// data.
- /// @param what The message to associate with this error.
- /// @param data The value associated with this error that was the source
- /// of the translation failure.
- template<class T> ptree_bad_data(const std::string &what,
- const T &data);
-
- ~ptree_bad_data() throw();
-
- /// Retrieve the data associated with this error. This is the source
- /// value that failed to be translated.
- template<class T> T data();
- private:
- boost::any m_data;
- };
-
-
- /// Error indicating that specified path does not exist. Derives from
- /// ptree_error.
- class ptree_bad_path : public ptree_error
- {
- public:
- /// Instantiate a ptree_bad_path with the given message and path data.
- /// @param what The message to associate with this error.
- /// @param path The path that could not be found in the property_tree.
- template<class T> ptree_bad_path(const std::string &what,
- const T &path);
-
- ~ptree_bad_path() throw();
-
- /// Retrieve the invalid path.
- template<class T> T path();
- private:
- boost::any m_path;
- };
-
-}}
-
-#include <boost/property_tree/detail/exception_implementation.hpp>
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/id_translator.hpp b/3rdParty/Boost/src/boost/property_tree/id_translator.hpp
deleted file mode 100644
index 02fdf44..0000000
--- a/3rdParty/Boost/src/boost/property_tree/id_translator.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-
-#ifndef BOOST_PROPERTY_TREE_ID_TRANSLATOR_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_ID_TRANSLATOR_HPP_INCLUDED
-
-#include <boost/property_tree/ptree_fwd.hpp>
-
-#include <boost/optional.hpp>
-#include <string>
-
-namespace boost { namespace property_tree
-{
-
- /// Simple implementation of the Translator concept. It does no translation.
- template <typename T>
- struct id_translator
- {
- typedef T internal_type;
- typedef T external_type;
-
- boost::optional<T> get_value(const T &v) { return v; }
- boost::optional<T> put_value(const T &v) { return v; }
- };
-
- // This is the default translator whenever you get two equal types.
- template <typename T>
- struct translator_between<T, T>
- {
- typedef id_translator<T> type;
- };
-
- // A more specific specialization for std::basic_string. Otherwise,
- // stream_translator's specialization wins.
- template <typename Ch, typename Traits, typename Alloc>
- struct translator_between< std::basic_string<Ch, Traits, Alloc>,
- std::basic_string<Ch, Traits, Alloc> >
- {
- typedef id_translator< std::basic_string<Ch, Traits, Alloc> > type;
- };
-
-}}
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/ptree.hpp b/3rdParty/Boost/src/boost/property_tree/ptree.hpp
deleted file mode 100644
index 243a9b6..0000000
--- a/3rdParty/Boost/src/boost/property_tree/ptree.hpp
+++ /dev/null
@@ -1,517 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-
-#ifndef BOOST_PROPERTY_TREE_PTREE_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_PTREE_HPP_INCLUDED
-
-#include <boost/property_tree/ptree_fwd.hpp>
-#include <boost/property_tree/string_path.hpp>
-#include <boost/property_tree/stream_translator.hpp>
-#include <boost/property_tree/exceptions.hpp>
-#include <boost/property_tree/detail/ptree_utils.hpp>
-
-#include <boost/multi_index_container.hpp>
-#include <boost/multi_index/indexed_by.hpp>
-#include <boost/multi_index/sequenced_index.hpp>
-#include <boost/multi_index/ordered_index.hpp>
-#include <boost/multi_index/member.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/throw_exception.hpp>
-#include <boost/optional.hpp>
-#include <utility> // for std::pair
-
-namespace boost { namespace property_tree
-{
-
- /**
- * Property tree main structure. A property tree is a hierarchical data
- * structure which has one element of type @p Data in each node, as well
- * as an ordered sequence of sub-nodes, which are additionally identified
- * by a non-unique key of type @p Key.
- *
- * Key equivalency is defined by @p KeyCompare, a predicate defining a
- * strict weak ordering.
- *
- * Property tree defines a Container-like interface to the (key-node) pairs
- * of its direct sub-nodes. The iterators are bidirectional. The sequence
- * of nodes is held in insertion order, not key order.
- */
- template<class Key, class Data, class KeyCompare>
- class basic_ptree
- {
-#if defined(BOOST_PROPERTY_TREE_DOXYGEN_INVOKED)
- public:
-#endif
- // Internal types
- /**
- * Simpler way to refer to this basic_ptree\<C,K,P,A\> type.
- * Note that this is private, and made public only for doxygen.
- */
- typedef basic_ptree<Key, Data, KeyCompare> self_type;
-
- public:
- // Basic types
- typedef Key key_type;
- typedef Data data_type;
- typedef KeyCompare key_compare;
-
- // Container view types
- typedef std::pair<const Key, self_type> value_type;
- typedef std::size_t size_type;
-
- // The problem with the iterators is that I can't make them complete
- // until the container is complete. Sucks. Especially for the reverses.
- class iterator;
- class const_iterator;
- class reverse_iterator;
- class const_reverse_iterator;
-
- // Associative view types
- class assoc_iterator;
- class const_assoc_iterator;
-
- // Property tree view types
- typedef typename path_of<Key>::type path_type;
-
-
- // The big five
-
- /** Creates a node with no children and default-constructed data. */
- basic_ptree();
- /** Creates a node with no children and a copy of the given data. */
- explicit basic_ptree(const data_type &data);
- basic_ptree(const self_type &rhs);
- ~basic_ptree();
- /** Basic guarantee only. */
- self_type &operator =(const self_type &rhs);
-
- /** Swap with other tree. Only constant-time and nothrow if the
- * data type's swap is.
- */
- void swap(self_type &rhs);
-
- // Container view functions
-
- /** The number of direct children of this node. */
- size_type size() const;
- size_type max_size() const;
- /** Whether there are any direct children. */
- bool empty() const;
-
- iterator begin();
- const_iterator begin() const;
- iterator end();
- const_iterator end() const;
- reverse_iterator rbegin();
- const_reverse_iterator rbegin() const;
- reverse_iterator rend();
- const_reverse_iterator rend() const;
-
- value_type &front();
- const value_type &front() const;
- value_type &back();
- const value_type &back() const;
-
- /** Insert a copy of the given tree with its key just before the given
- * position in this node. This operation invalidates no iterators.
- * @return An iterator to the newly created child.
- */
- iterator insert(iterator where, const value_type &value);
-
- /** Range insert. Equivalent to:
- * @code
- * for(; first != last; ++first) insert(where, *first);
- * @endcode
- */
- template<class It> void insert(iterator where, It first, It last);
-
- /** Erase the child pointed at by the iterator. This operation
- * invalidates the given iterator, as well as its equivalent
- * assoc_iterator.
- * @return A valid iterator pointing to the element after the erased.
- */
- iterator erase(iterator where);
-
- /** Range erase. Equivalent to:
- * @code
- * while(first != last;) first = erase(first);
- * @endcode
- */
- iterator erase(iterator first, iterator last);
-
- /** Equivalent to insert(begin(), value). */
- iterator push_front(const value_type &value);
-
- /** Equivalent to insert(end(), value). */
- iterator push_back(const value_type &value);
-
- /** Equivalent to erase(begin()). */
- void pop_front();
-
- /** Equivalent to erase(boost::prior(end())). */
- void pop_back();
-
- /** Reverses the order of direct children in the property tree. */
- void reverse();
-
- /** Sorts the direct children of this node according to the predicate.
- * The predicate is passed the whole pair of key and child.
- */
- template<class Compare> void sort(Compare comp);
-
- /** Sorts the direct children of this node according to key order. */
- void sort();
-
- // Equality
-
- /** Two property trees are the same if they have the same data, the keys
- * and order of their children are the same, and the children compare
- * equal, recursively.
- */
- bool operator ==(const self_type &rhs) const;
- bool operator !=(const self_type &rhs) const;
-
- // Associative view
-
- /** Returns an iterator to the first child, in order. */
- assoc_iterator ordered_begin();
- /** Returns an iterator to the first child, in order. */
- const_assoc_iterator ordered_begin() const;
-
- /** Returns the not-found iterator. Equivalent to end() in a real
- * associative container.
- */
- assoc_iterator not_found();
- /** Returns the not-found iterator. Equivalent to end() in a real
- * associative container.
- */
- const_assoc_iterator not_found() const;
-
- /** Find a child with the given key, or not_found() if there is none.
- * There is no guarantee about which child is returned if multiple have
- * the same key.
- */
- assoc_iterator find(const key_type &key);
-
- /** Find a child with the given key, or not_found() if there is none.
- * There is no guarantee about which child is returned if multiple have
- * the same key.
- */
- const_assoc_iterator find(const key_type &key) const;
-
- /** Find the range of children that have the given key. */
- std::pair<assoc_iterator, assoc_iterator>
- equal_range(const key_type &key);
-
- /** Find the range of children that have the given key. */
- std::pair<const_assoc_iterator, const_assoc_iterator>
- equal_range(const key_type &key) const;
-
- /** Count the number of direct children with the given key. */
- size_type count(const key_type &key) const;
-
- /** Erase all direct children with the given key and return the count.
- */
- size_type erase(const key_type &key);
-
- /** Get the iterator that points to the same element as the argument.
- * @note A valid assoc_iterator range (a, b) does not imply that
- * (to_iterator(a), to_iterator(b)) is a valid range.
- */
- iterator to_iterator(assoc_iterator it);
-
- /** Get the iterator that points to the same element as the argument.
- * @note A valid const_assoc_iterator range (a, b) does not imply that
- * (to_iterator(a), to_iterator(b)) is a valid range.
- */
- const_iterator to_iterator(const_assoc_iterator it) const;
-
- // Property tree view
-
- /** Reference to the actual data in this node. */
- data_type &data();
-
- /** Reference to the actual data in this node. */
- const data_type &data() const;
-
- /** Clear this tree completely, of both data and children. */
- void clear();
-
- /** Get the child at the given path, or throw @c ptree_bad_path.
- * @note Depending on the path, the result at each level may not be
- * completely determinate, i.e. if the same key appears multiple
- * times, which child is chosen is not specified. This can lead
- * to the path not being resolved even though there is a
- * descendant with this path. Example:
- * @code
- * a -> b -> c
- * -> b
- * @endcode
- * The path "a.b.c" will succeed if the resolution of "b" chooses
- * the first such node, but fail if it chooses the second.
- */
- self_type &get_child(const path_type &path);
-
- /** Get the child at the given path, or throw @c ptree_bad_path. */
- const self_type &get_child(const path_type &path) const;
-
- /** Get the child at the given path, or return @p default_value. */
- self_type &get_child(const path_type &path, self_type &default_value);
-
- /** Get the child at the given path, or return @p default_value. */
- const self_type &get_child(const path_type &path,
- const self_type &default_value) const;
-
- /** Get the child at the given path, or return boost::null. */
- optional<self_type &> get_child_optional(const path_type &path);
-
- /** Get the child at the given path, or return boost::null. */
- optional<const self_type &>
- get_child_optional(const path_type &path) const;
-
- /** Set the node at the given path to the given value. Create any
- * missing parents. If the node at the path already exists, replace it.
- * @return A reference to the inserted subtree.
- * @note Because of the way paths work, it is not generally guaranteed
- * that a node newly created can be accessed using the same path.
- * @note If the path could refer to multiple nodes, it is unspecified
- * which one gets replaced.
- */
- self_type &put_child(const path_type &path, const self_type &value);
-
- /** Add the node at the given path. Create any missing parents. If there
- * already is a node at the path, add another one with the same key.
- * @param path Path to the child. The last fragment must not have an
- * index.
- * @return A reference to the inserted subtree.
- * @note Because of the way paths work, it is not generally guaranteed
- * that a node newly created can be accessed using the same path.
- */
- self_type &add_child(const path_type &path, const self_type &value);
-
- /** Take the value of this node and attempt to translate it to a
- * @c Type object using the supplied translator.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type, class Translator>
- typename boost::enable_if<detail::is_translator<Translator>, Type>::type
- get_value(Translator tr) const;
-
- /** Take the value of this node and attempt to translate it to a
- * @c Type object using the default translator.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type>
- Type get_value() const;
-
- /** Take the value of this node and attempt to translate it to a
- * @c Type object using the supplied translator. Return @p default_value
- * if this fails.
- */
- template<class Type, class Translator>
- Type get_value(const Type &default_value, Translator tr) const;
-
- /** Make get_value do the right thing for string literals. */
- template <class Ch, class Translator>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- get_value(const Ch *default_value, Translator tr) const;
-
- /** Take the value of this node and attempt to translate it to a
- * @c Type object using the default translator. Return @p default_value
- * if this fails.
- */
- template<class Type>
- typename boost::disable_if<detail::is_translator<Type>, Type>::type
- get_value(const Type &default_value) const;
-
- /** Make get_value do the right thing for string literals. */
- template <class Ch>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- get_value(const Ch *default_value) const;
-
- /** Take the value of this node and attempt to translate it to a
- * @c Type object using the supplied translator. Return boost::null if
- * this fails.
- */
- template<class Type, class Translator>
- optional<Type> get_value_optional(Translator tr) const;
-
- /** Take the value of this node and attempt to translate it to a
- * @c Type object using the default translator. Return boost::null if
- * this fails.
- */
- template<class Type>
- optional<Type> get_value_optional() const;
-
- /** Replace the value at this node with the given value, translated
- * to the tree's data type using the supplied translator.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type, class Translator>
- void put_value(const Type &value, Translator tr);
-
- /** Replace the value at this node with the given value, translated
- * to the tree's data type using the default translator.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type>
- void put_value(const Type &value);
-
- /** Shorthand for get_child(path).get_value(tr). */
- template<class Type, class Translator>
- typename boost::enable_if<detail::is_translator<Translator>, Type>::type
- get(const path_type &path, Translator tr) const;
-
- /** Shorthand for get_child(path).get_value\<Type\>(). */
- template<class Type>
- Type get(const path_type &path) const;
-
- /** Shorthand for get_child(path, empty_ptree())
- * .get_value(default_value, tr).
- * That is, return the translated value if possible, and the default
- * value if the node doesn't exist or conversion fails.
- */
- template<class Type, class Translator>
- Type get(const path_type &path,
- const Type &default_value,
- Translator tr) const;
-
- /** Make get do the right thing for string literals. */
- template <class Ch, class Translator>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- get(const path_type &path, const Ch *default_value, Translator tr)const;
-
- /** Shorthand for get_child(path, empty_ptree())
- * .get_value(default_value).
- * That is, return the translated value if possible, and the default
- * value if the node doesn't exist or conversion fails.
- */
- template<class Type>
- typename boost::disable_if<detail::is_translator<Type>, Type>::type
- get(const path_type &path, const Type &default_value) const;
-
- /** Make get do the right thing for string literals. */
- template <class Ch>
- typename boost::enable_if<
- detail::is_character<Ch>,
- std::basic_string<Ch>
- >::type
- get(const path_type &path, const Ch *default_value) const;
-
- /** Shorthand for:
- * @code
- * if(optional\<self_type&\> node = get_child_optional(path))
- * return node->get_value_optional(tr);
- * return boost::null;
- * @endcode
- * That is, return the value if it exists and can be converted, or nil.
- */
- template<class Type, class Translator>
- optional<Type> get_optional(const path_type &path, Translator tr) const;
-
- /** Shorthand for:
- * @code
- * if(optional\<const self_type&\> node = get_child_optional(path))
- * return node->get_value_optional();
- * return boost::null;
- * @endcode
- */
- template<class Type>
- optional<Type> get_optional(const path_type &path) const;
-
- /** Set the value of the node at the given path to the supplied value,
- * translated to the tree's data type. If the node doesn't exist, it is
- * created, including all its missing parents.
- * @return The node that had its value changed.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type, class Translator>
- self_type &put(const path_type &path, const Type &value, Translator tr);
-
- /** Set the value of the node at the given path to the supplied value,
- * translated to the tree's data type. If the node doesn't exist, it is
- * created, including all its missing parents.
- * @return The node that had its value changed.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type>
- self_type &put(const path_type &path, const Type &value);
-
- /** If the node identified by the path does not exist, create it,
- * including all its missing parents.
- * If the node already exists, add a sibling with the same key.
- * Set the newly created node's value to the given paremeter,
- * translated with the supplied translator.
- * @param path Path to the child. The last fragment must not have an
- * index.
- * @param value The value to add.
- * @param tr The translator to use.
- * @return The node that was added.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type, class Translator>
- self_type &add(const path_type &path,
- const Type &value,
- Translator tr);
-
- /** If the node identified by the path does not exist, create it,
- * including all its missing parents.
- * If the node already exists, add a sibling with the same key.
- * Set the newly created node's value to the given paremeter,
- * translated with the supplied translator.
- * @param path Path to the child. The last fragment must not have an
- * index.
- * @param value The value to add.
- * @return The node that was added.
- * @throw ptree_bad_data if the conversion fails.
- */
- template<class Type>
- self_type &add(const path_type &path, const Type &value);
-
- private:
- // Hold the data of this node
- data_type m_data;
- // Hold the children - this is a void* because we can't complete the
- // container type within the class.
- void* m_children;
-
- // Getter tree-walk. Not const-safe! Gets the node the path refers to,
- // or null. Destroys p's value.
- self_type* walk_path(path_type& p) const;
-
- // Modifer tree-walk. Gets the parent of the node referred to by the
- // path, creating nodes as necessary. p is the path to the remaining
- // child.
- self_type& force_path(path_type& p);
-
- // This struct contains typedefs for the concrete types.
- struct subs;
- friend struct subs;
- friend class iterator;
- friend class const_iterator;
- friend class reverse_iterator;
- friend class const_reverse_iterator;
- };
-
-}}
-
-#include <boost/property_tree/detail/ptree_implementation.hpp>
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/ptree_fwd.hpp b/3rdParty/Boost/src/boost/property_tree/ptree_fwd.hpp
deleted file mode 100644
index fe36741..0000000
--- a/3rdParty/Boost/src/boost/property_tree/ptree_fwd.hpp
+++ /dev/null
@@ -1,143 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_PTREE_FWD_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_PTREE_FWD_HPP_INCLUDED
-
-#include <boost/config.hpp>
-#include <boost/optional/optional_fwd.hpp>
-#include <boost/throw_exception.hpp>
-#include <functional> // for std::less
-#include <memory> // for std::allocator
-#include <string>
-
-namespace boost { namespace property_tree
-{
- namespace detail {
- template <typename T> struct less_nocase;
- }
-
- // Classes
-
- template < class Key, class Data, class KeyCompare = std::less<Key> >
- class basic_ptree;
-
- template <typename T>
- struct id_translator;
-
- template <typename String, typename Translator>
- class string_path;
-
- // Texas-style concepts for documentation only.
-#if 0
- concept PropertyTreePath<class Path> {
- // The key type for which this path works.
- typename key_type;
- // Return the key that the first segment of the path names.
- // Split the head off the state.
- key_type Path::reduce();
-
- // Return true if the path is empty.
- bool Path::empty() const;
-
- // Return true if the path contains a single element.
- bool Path::single() const;
-
- // Dump as a std::string, for exception messages.
- std::string Path::dump() const;
- }
- concept PropertyTreeKey<class Key> {
- PropertyTreePath path;
- requires SameType<Key, PropertyTreePath<path>::key_type>;
- }
- concept PropertyTreeTranslator<class Tr> {
- typename internal_type;
- typename external_type;
-
- boost::optional<external_type> Tr::get_value(internal_type);
- boost::optional<internal_type> Tr::put_value(external_type);
- }
-#endif
- /// If you want to use a custom key type, specialize this struct for it
- /// and give it a 'type' typedef that specifies your path type. The path
- /// type must conform to the Path concept described in the documentation.
- /// This is already specialized for std::basic_string.
- template <typename Key>
- struct path_of;
-
- /// Specialize this struct to specify a default translator between the data
- /// in a tree whose data_type is Internal, and the external data_type
- /// specified in a get_value, get, put_value or put operation.
- /// This is already specialized for Internal being std::basic_string.
- template <typename Internal, typename External>
- struct translator_between;
-
- class ptree_error;
- class ptree_bad_data;
- class ptree_bad_path;
-
- // Typedefs
-
- /** Implements a path using a std::string as the key. */
- typedef string_path<std::string, id_translator<std::string> > path;
-
- /**
- * A property tree with std::string for key and data, and default
- * comparison.
- */
- typedef basic_ptree<std::string, std::string> ptree;
-
- /**
- * A property tree with std::string for key and data, and case-insensitive
- * comparison.
- */
- typedef basic_ptree<std::string, std::string,
- detail::less_nocase<std::string> >
- iptree;
-
-#ifndef BOOST_NO_STD_WSTRING
- /** Implements a path using a std::wstring as the key. */
- typedef string_path<std::wstring, id_translator<std::wstring> > wpath;
-
- /**
- * A property tree with std::wstring for key and data, and default
- * comparison.
- * @note The type only exists if the platform supports @c wchar_t.
- */
- typedef basic_ptree<std::wstring, std::wstring> wptree;
-
- /**
- * A property tree with std::wstring for key and data, and case-insensitive
- * comparison.
- * @note The type only exists if the platform supports @c wchar_t.
- */
- typedef basic_ptree<std::wstring, std::wstring,
- detail::less_nocase<std::wstring> >
- wiptree;
-#endif
-
- // Free functions
-
- /**
- * Swap two property tree instances.
- */
- template<class K, class D, class C>
- void swap(basic_ptree<K, D, C> &pt1,
- basic_ptree<K, D, C> &pt2);
-
-} }
-
-
-#if !defined(BOOST_PROPERTY_TREE_DOXYGEN_INVOKED)
- // Throwing macro to avoid no return warnings portably
-# define BOOST_PROPERTY_TREE_THROW(e) BOOST_THROW_EXCEPTION(e)
-#endif
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/stream_translator.hpp b/3rdParty/Boost/src/boost/property_tree/stream_translator.hpp
deleted file mode 100644
index c7fabfa..0000000
--- a/3rdParty/Boost/src/boost/property_tree/stream_translator.hpp
+++ /dev/null
@@ -1,221 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-
-#ifndef BOOST_PROPERTY_TREE_STREAM_TRANSLATOR_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_STREAM_TRANSLATOR_HPP_INCLUDED
-
-#include <boost/property_tree/ptree_fwd.hpp>
-
-#include <boost/optional.hpp>
-#include <boost/optional/optional_io.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/decay.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#include <sstream>
-#include <string>
-#include <locale>
-#include <limits>
-
-namespace boost { namespace property_tree
-{
-
- template <typename Ch, typename Traits, typename E, typename Enabler = void>
- struct customize_stream
- {
- static void insert(std::basic_ostream<Ch, Traits>& s, const E& e) {
- s << e;
- }
- static void extract(std::basic_istream<Ch, Traits>& s, E& e) {
- s >> e;
- if(!s.eof()) {
- s >> std::ws;
- }
- }
- };
-
- // No whitespace skipping for single characters.
- template <typename Ch, typename Traits>
- struct customize_stream<Ch, Traits, Ch, void>
- {
- static void insert(std::basic_ostream<Ch, Traits>& s, Ch e) {
- s << e;
- }
- static void extract(std::basic_istream<Ch, Traits>& s, Ch& e) {
- s.unsetf(std::ios_base::skipws);
- s >> e;
- }
- };
-
- // Ugly workaround for numeric_traits that don't have members when not
- // specialized, e.g. MSVC.
- namespace detail
- {
- template <bool is_specialized>
- struct is_inexact_impl
- {
- template <typename T>
- struct test
- {
- typedef boost::false_type type;
- };
- };
- template <>
- struct is_inexact_impl<true>
- {
- template <typename T>
- struct test
- {
- typedef boost::integral_constant<bool,
- !std::numeric_limits<T>::is_exact> type;
- };
- };
-
- template <typename F>
- struct is_inexact
- {
- typedef typename boost::decay<F>::type decayed;
- typedef typename is_inexact_impl<
- std::numeric_limits<decayed>::is_specialized
- >::BOOST_NESTED_TEMPLATE test<decayed>::type type;
- static const bool value = type::value;
- };
- }
-
- template <typename Ch, typename Traits, typename F>
- struct customize_stream<Ch, Traits, F,
- typename boost::enable_if< detail::is_inexact<F> >::type
- >
- {
- static void insert(std::basic_ostream<Ch, Traits>& s, const F& e) {
- s.precision(std::numeric_limits<F>::digits10 + 1);
- s << e;
- }
- static void extract(std::basic_istream<Ch, Traits>& s, F& e) {
- s >> e;
- if(!s.eof()) {
- s >> std::ws;
- }
- }
- };
-
- template <typename Ch, typename Traits>
- struct customize_stream<Ch, Traits, bool, void>
- {
- static void insert(std::basic_ostream<Ch, Traits>& s, bool e) {
- s.setf(std::ios_base::boolalpha);
- s << e;
- }
- static void extract(std::basic_istream<Ch, Traits>& s, bool& e) {
- s >> e;
- if(s.fail()) {
- // Try again in word form.
- s.clear();
- s.setf(std::ios_base::boolalpha);
- s >> e;
- }
- if(!s.eof()) {
- s >> std::ws;
- }
- }
- };
-
- template <typename Ch, typename Traits>
- struct customize_stream<Ch, Traits, signed char, void>
- {
- static void insert(std::basic_ostream<Ch, Traits>& s, signed char e) {
- s << (int)e;
- }
- static void extract(std::basic_istream<Ch, Traits>& s, signed char& e) {
- int i;
- s >> i;
- // out of range?
- if(i > (std::numeric_limits<signed char>::max)() ||
- i < (std::numeric_limits<signed char>::min)())
- {
- s.clear(); // guarantees eof to be unset
- return;
- }
- e = (signed char)i;
- if(!s.eof()) {
- s >> std::ws;
- }
- }
- };
-
- template <typename Ch, typename Traits>
- struct customize_stream<Ch, Traits, unsigned char, void>
- {
- static void insert(std::basic_ostream<Ch, Traits>& s, unsigned char e) {
- s << (unsigned)e;
- }
- static void extract(std::basic_istream<Ch,Traits>& s, unsigned char& e){
- unsigned i;
- s >> i;
- // out of range?
- if(i > (std::numeric_limits<unsigned char>::max)()) {
- s.clear(); // guarantees eof to be unset
- return;
- }
- e = (unsigned char)i;
- if(!s.eof()) {
- s >> std::ws;
- }
- }
- };
-
- /// Implementation of Translator that uses the stream overloads.
- template <typename Ch, typename Traits, typename Alloc, typename E>
- class stream_translator
- {
- typedef customize_stream<Ch, Traits, E> customized;
- public:
- typedef std::basic_string<Ch, Traits, Alloc> internal_type;
- typedef E external_type;
-
- explicit stream_translator(std::locale loc = std::locale())
- : m_loc(loc)
- {}
-
- boost::optional<E> get_value(const internal_type &v) {
- std::basic_istringstream<Ch, Traits, Alloc> iss(v);
- iss.imbue(m_loc);
- E e;
- customized::extract(iss, e);
- if(iss.fail() || iss.bad() || iss.get() != Traits::eof()) {
- return boost::optional<E>();
- }
- return e;
- }
- boost::optional<internal_type> put_value(const E &v) {
- std::basic_ostringstream<Ch, Traits, Alloc> oss;
- oss.imbue(m_loc);
- customized::insert(oss, v);
- if(oss) {
- return oss.str();
- }
- return boost::optional<internal_type>();
- }
-
- private:
- std::locale m_loc;
- };
-
- // This is the default translator when basic_string is the internal type.
- // Unless the external type is also basic_string, in which case
- // id_translator takes over.
- template <typename Ch, typename Traits, typename Alloc, typename E>
- struct translator_between<std::basic_string<Ch, Traits, Alloc>, E>
- {
- typedef stream_translator<Ch, Traits, Alloc, E> type;
- };
-
-}}
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/string_path.hpp b/3rdParty/Boost/src/boost/property_tree/string_path.hpp
deleted file mode 100644
index 07ec6b0..0000000
--- a/3rdParty/Boost/src/boost/property_tree/string_path.hpp
+++ /dev/null
@@ -1,273 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-
-#ifndef BOOST_PROPERTY_TREE_STRING_PATH_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_STRING_PATH_HPP_INCLUDED
-
-#include <boost/property_tree/ptree_fwd.hpp>
-#include <boost/property_tree/id_translator.hpp>
-#include <boost/property_tree/exceptions.hpp>
-#include <boost/property_tree/detail/ptree_utils.hpp>
-
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/optional.hpp>
-#include <boost/throw_exception.hpp>
-#include <algorithm>
-#include <string>
-#include <iterator>
-#include <cassert>
-
-namespace boost { namespace property_tree
-{
- namespace detail
- {
- template <typename Sequence, typename Iterator>
- void append_and_preserve_iter(Sequence &s, const Sequence &r,
- Iterator &, std::forward_iterator_tag)
- {
- // Here we boldly assume that anything that is not random-access
- // preserves validity. This is valid for the STL sequences.
- s.insert(s.end(), r.begin(), r.end());
- }
- template <typename Sequence, typename Iterator>
- void append_and_preserve_iter(Sequence &s, const Sequence &r,
- Iterator &it,
- std::random_access_iterator_tag)
- {
- // Convert the iterator to an index, and later back.
- typename std::iterator_traits<Iterator>::difference_type idx =
- it - s.begin();
- s.insert(s.end(), r.begin(), r.end());
- it = s.begin() + idx;
- }
-
- template <typename Sequence>
- inline std::string dump_sequence(const Sequence &)
- {
- return "<undumpable sequence>";
- }
- inline std::string dump_sequence(const std::string &s)
- {
- return s;
- }
-#ifndef BOOST_NO_STD_WSTRING
- inline std::string dump_sequence(const std::wstring &s)
- {
- return narrow(s.c_str());
- }
-#endif
- }
-
- /// Default path class. A path is a sequence of values. Groups of values
- /// are separated by the separator value, which defaults to '.' cast to
- /// the sequence's value type. The group of values is then passed to the
- /// translator to get a key.
- ///
- /// If instantiated with std::string and id_translator\<std::string\>,
- /// it accepts paths of the form "one.two.three.four".
- ///
- /// @tparam String Any Sequence. If the sequence does not support random-
- /// access iteration, concatenation of paths assumes that
- /// insertions at the end preserve iterator validity.
- /// @tparam Translator A translator with internal_type == String.
- template <typename String, typename Translator>
- class string_path
- {
- BOOST_STATIC_ASSERT((is_same<String,
- typename Translator::internal_type>::value));
- public:
- typedef typename Translator::external_type key_type;
- typedef typename String::value_type char_type;
-
- /// Create an empty path.
- explicit string_path(char_type separator = char_type('.'));
- /// Create a path by parsing the given string.
- /// @param value A sequence, possibly with separators, that describes
- /// the path, e.g. "one.two.three".
- /// @param separator The separator used in parsing. Defaults to '.'.
- /// @param tr The translator used by this path to convert the individual
- /// parts to keys.
- string_path(const String &value, char_type separator = char_type('.'),
- Translator tr = Translator());
- /// Create a path by parsing the given string.
- /// @param value A zero-terminated array of values. Only use if zero-
- /// termination makes sense for your type, and your
- /// sequence supports construction from it. Intended for
- /// string literals.
- /// @param separator The separator used in parsing. Defaults to '.'.
- /// @param tr The translator used by this path to convert the individual
- /// parts to keys.
- string_path(const char_type *value,
- char_type separator = char_type('.'),
- Translator tr = Translator());
-
- // Default copying doesn't do the right thing with the iterator
- string_path(const string_path &o);
- string_path& operator =(const string_path &o);
-
- /// Take a single element off the path at the front and return it.
- key_type reduce();
-
- /// Test if the path is empty.
- bool empty() const;
-
- /// Test if the path contains a single element, i.e. no separators.
- bool single() const;
-
- std::string dump() const {
- return detail::dump_sequence(m_value);
- }
-
- /// Append a second path to this one.
- /// @pre o's separator is the same as this one's, or o has no separators
- string_path& operator /=(const string_path &o) {
- // If it's single, there's no separator. This allows to do
- // p /= "piece";
- // even for non-default separators.
- assert((m_separator == o.m_separator || o.empty() || o.single())
- && "Incompatible paths.");
- if(!o.empty()) {
- String sub;
- if(!this->empty()) {
- sub.push_back(m_separator);
- }
- sub.insert(sub.end(), o.cstart(), o.m_value.end());
- detail::append_and_preserve_iter(m_value, sub, m_start,
- typename std::iterator_traits<s_iter>::iterator_category());
- }
- return *this;
- }
-
- private:
- typedef typename String::iterator s_iter;
- typedef typename String::const_iterator s_c_iter;
- String m_value;
- char_type m_separator;
- Translator m_tr;
- s_iter m_start;
- s_c_iter cstart() const { return m_start; }
- };
-
- template <typename String, typename Translator> inline
- string_path<String, Translator>::string_path(char_type separator)
- : m_separator(separator), m_start(m_value.begin())
- {}
-
- template <typename String, typename Translator> inline
- string_path<String, Translator>::string_path(const String &value,
- char_type separator,
- Translator tr)
- : m_value(value), m_separator(separator),
- m_tr(tr), m_start(m_value.begin())
- {}
-
- template <typename String, typename Translator> inline
- string_path<String, Translator>::string_path(const char_type *value,
- char_type separator,
- Translator tr)
- : m_value(value), m_separator(separator),
- m_tr(tr), m_start(m_value.begin())
- {}
-
- template <typename String, typename Translator> inline
- string_path<String, Translator>::string_path(const string_path &o)
- : m_value(o.m_value), m_separator(o.m_separator),
- m_tr(o.m_tr), m_start(m_value.begin())
- {
- std::advance(m_start, std::distance(o.m_value.begin(), o.cstart()));
- }
-
- template <typename String, typename Translator> inline
- string_path<String, Translator>&
- string_path<String, Translator>::operator =(const string_path &o)
- {
- m_value = o.m_value;
- m_separator = o.m_separator;
- m_tr = o.m_tr;
- m_start = m_value.begin();
- std::advance(m_start, std::distance(o.m_value.begin(), o.cstart()));
- return *this;
- }
-
- template <typename String, typename Translator>
- typename Translator::external_type string_path<String, Translator>::reduce()
- {
- assert(!empty() && "Reducing empty path");
-
- s_iter next_sep = std::find(m_start, m_value.end(), m_separator);
- String part(m_start, next_sep);
- m_start = next_sep;
- if(!empty()) {
- // Unless we're at the end, skip the separator we found.
- ++m_start;
- }
-
- if(optional<key_type> key = m_tr.get_value(part)) {
- return *key;
- }
- BOOST_PROPERTY_TREE_THROW(ptree_bad_path("Path syntax error", *this));
- }
-
- template <typename String, typename Translator> inline
- bool string_path<String, Translator>::empty() const
- {
- return m_start == m_value.end();
- }
-
- template <typename String, typename Translator> inline
- bool string_path<String, Translator>::single() const
- {
- return std::find(static_cast<s_c_iter>(m_start),
- m_value.end(), m_separator)
- == m_value.end();
- }
-
- // By default, this is the path for strings. You can override this by
- // specializing path_of for a more specific form of std::basic_string.
- template <typename Ch, typename Traits, typename Alloc>
- struct path_of< std::basic_string<Ch, Traits, Alloc> >
- {
- typedef std::basic_string<Ch, Traits, Alloc> _string;
- typedef string_path< _string, id_translator<_string> > type;
- };
-
- template <typename String, typename Translator> inline
- string_path<String, Translator> operator /(
- string_path<String, Translator> p1,
- const string_path<String, Translator> &p2)
- {
- p1 /= p2;
- return p1;
- }
-
- // These shouldn't be necessary, but GCC won't find the one above.
- template <typename String, typename Translator> inline
- string_path<String, Translator> operator /(
- string_path<String, Translator> p1,
- const typename String::value_type *p2)
- {
- p1 /= p2;
- return p1;
- }
-
- template <typename String, typename Translator> inline
- string_path<String, Translator> operator /(
- const typename String::value_type *p1,
- const string_path<String, Translator> &p2)
- {
- string_path<String, Translator> t(p1);
- t /= p2;
- return t;
- }
-
-}}
-
-#endif
diff --git a/3rdParty/Boost/src/boost/property_tree/xml_parser.hpp b/3rdParty/Boost/src/boost/property_tree/xml_parser.hpp
deleted file mode 100644
index 4f36e9a..0000000
--- a/3rdParty/Boost/src/boost/property_tree/xml_parser.hpp
+++ /dev/null
@@ -1,153 +0,0 @@
-// ----------------------------------------------------------------------------
-// Copyright (C) 2002-2006 Marcin Kalicinski
-// Copyright (C) 2009 Sebastian Redl
-//
-// 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)
-//
-// For more information, see www.boost.org
-// ----------------------------------------------------------------------------
-#ifndef BOOST_PROPERTY_TREE_XML_PARSER_HPP_INCLUDED
-#define BOOST_PROPERTY_TREE_XML_PARSER_HPP_INCLUDED
-
-#include <boost/property_tree/ptree.hpp>
-#include <boost/property_tree/detail/xml_parser_write.hpp>
-#include <boost/property_tree/detail/xml_parser_error.hpp>
-#include <boost/property_tree/detail/xml_parser_writer_settings.hpp>
-#include <boost/property_tree/detail/xml_parser_flags.hpp>
-#include <boost/property_tree/detail/xml_parser_read_rapidxml.hpp>
-
-#include <fstream>
-#include <string>
-#include <locale>
-
-namespace boost { namespace property_tree { namespace xml_parser
-{
-
- /**
- * Reads XML from an input stream and translates it to property tree.
- * @note Clears existing contents of property tree. In case of error the
- * property tree unmodified.
- * @note XML attributes are placed under keys named @c \<xmlattr\>.
- * @throw xml_parser_error In case of error deserializing the property tree.
- * @param stream Stream from which to read in the property tree.
- * @param[out] pt The property tree to populate.
- * @param flags Flags controlling the behaviour of the parser.
- * The following flags are supported:
- * @li @c no_concat_text -- Prevents concatenation of text nodes into
- * datastring of property tree. Puts them in
- * separate @c \<xmltext\> strings instead.
- * @li @c no_comments -- Skip XML comments.
- * @li @c trim_whitespace -- Trim leading and trailing whitespace from text,
- * and collapse sequences of whitespace.
- */
- template<class Ptree>
- void read_xml(std::basic_istream<
- typename Ptree::key_type::value_type
- > &stream,
- Ptree &pt,
- int flags = 0)
- {
- read_xml_internal(stream, pt, flags, std::string());
- }
-
- /**
- * Reads XML from a file using the given locale and translates it to
- * property tree.
- * @note Clears existing contents of property tree. In case of error the
- * property tree unmodified.
- * @note XML attributes are placed under keys named @c \<xmlattr\>.
- * @throw xml_parser_error In case of error deserializing the property tree.
- * @param filename The file from which to read in the property tree.
- * @param[out] pt The property tree to populate.
- * @param flags Flags controlling the bahviour of the parser.
- * The following flags are supported:
- * @li @c no_concat_text -- Prevents concatenation of text nodes into
- * datastring of property tree. Puts them in
- * separate @c \<xmltext\> strings instead.
- * @li @c no_comments -- Skip XML comments.
- * @param loc The locale to use when reading in the file contents.
- */
- template<class Ptree>
- void read_xml(const std::string &filename,
- Ptree &pt,
- int flags = 0,
- const std::locale &loc = std::locale())
- {
- BOOST_ASSERT(validate_flags(flags));
- std::basic_ifstream<typename Ptree::key_type::value_type>
- stream(filename.c_str());
- if (!stream)
- BOOST_PROPERTY_TREE_THROW(xml_parser_error(
- "cannot open file", filename, 0));
- stream.imbue(loc);
- read_xml_internal(stream, pt, flags, filename);
- }
-
- /**
- * Translates the property tree to XML and writes it the given output
- * stream.
- * @throw xml_parser_error In case of error translating the property tree to
- * XML or writing to the output stream.
- * @param stream The stream to which to write the XML representation of the
- * property tree.
- * @param pt The property tree to tranlsate to XML and output.
- * @param settings The settings to use when writing out the property tree as
- * XML.
- */
- template<class Ptree>
- void write_xml(std::basic_ostream<
- typename Ptree::key_type::value_type
- > &stream,
- const Ptree &pt,
- const xml_writer_settings<
- typename Ptree::key_type::value_type
- > & settings = xml_writer_settings<
- typename Ptree::key_type::value_type>() )
- {
- write_xml_internal(stream, pt, std::string(), settings);
- }
-
- /**
- * Translates the property tree to XML and writes it the given file.
- * @throw xml_parser_error In case of error translating the property tree to
- * XML or writing to the output stream.
- * @param filename The file to which to write the XML representation of the
- * property tree.
- * @param pt The property tree to tranlsate to XML and output.
- * @param loc The locale to use when writing the output to file.
- * @param settings The settings to use when writing out the property tree as
- * XML.
- */
- template<class Ptree>
- void write_xml(const std::string &filename,
- const Ptree &pt,
- const std::locale &loc = std::locale(),
- const xml_writer_settings<
- typename Ptree::key_type::value_type
- > & settings = xml_writer_settings<
- typename Ptree::key_type::value_type>())
- {
- std::basic_ofstream<typename Ptree::key_type::value_type>
- stream(filename.c_str());
- if (!stream)
- BOOST_PROPERTY_TREE_THROW(xml_parser_error(
- "cannot open file", filename, 0));
- stream.imbue(loc);
- write_xml_internal(stream, pt, filename, settings);
- }
-
-} } }
-
-namespace boost { namespace property_tree
-{
- using xml_parser::read_xml;
- using xml_parser::write_xml;
- using xml_parser::xml_parser_error;
-
- using xml_parser::xml_writer_settings;
- using xml_parser::xml_writer_make_settings;
-} }
-
-#endif
diff --git a/3rdParty/Boost/src/boost/range/begin.hpp b/3rdParty/Boost/src/boost/range/begin.hpp
index a4a5e10..c668488 100644
--- a/3rdParty/Boost/src/boost/range/begin.hpp
+++ b/3rdParty/Boost/src/boost/range/begin.hpp
@@ -91,6 +91,11 @@ namespace range_detail
} // namespace 'range_detail'
#endif
+// Use a ADL namespace barrier to avoid ambiguity with other unqualified
+// calls. This is particularly important with C++0x encouraging
+// unqualified calls to begin/end.
+namespace range_adl_barrier
+{
template< class T >
inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type begin( T& r )
@@ -114,19 +119,25 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( const T& r )
return range_begin( r );
}
+ } // namespace range_adl_barrier
} // namespace boost
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
namespace boost
{
- template< class T >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
- const_begin( const T& r )
+ namespace range_adl_barrier
{
- return boost::begin( r );
- }
-}
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
+ const_begin( const T& r )
+ {
+ return boost::range_adl_barrier::begin( r );
+ }
+ } // namespace range_adl_barrier
+
+ using namespace range_adl_barrier;
+} // namespace boost
#endif
diff --git a/3rdParty/Boost/src/boost/range/concepts.hpp b/3rdParty/Boost/src/boost/range/concepts.hpp
index 8e4d2cf..5965293 100644
--- a/3rdParty/Boost/src/boost/range/concepts.hpp
+++ b/3rdParty/Boost/src/boost/range/concepts.hpp
@@ -98,8 +98,9 @@ namespace boost {
// classes:
//
// The Range algorithms often do not require that the iterators are
- // Assignable, but the correct standard conformant iterators
- // do require the iterators to be a model of the Assignable concept.
+ // Assignable or default constructable, but the correct standard
+ // conformant iterators do require the iterators to be a model of the
+ // Assignable concept.
// Iterators that contains a functor that is not assignable therefore
// are not correct models of the standard iterator concepts,
// despite being adequate for most algorithms. An example of this
@@ -141,6 +142,26 @@ namespace boost {
BOOST_DEDUCED_TYPENAME SinglePassIteratorConcept::traversal_category,
single_pass_traversal_tag
>));
+
+ BOOST_CONCEPT_USAGE(SinglePassIteratorConcept)
+ {
+ Iterator i2(++i);
+ boost::ignore_unused_variable_warning(i2);
+
+ // deliberately we are loose with the postfix version for the single pass
+ // iterator due to the commonly poor adherence to the specification means that
+ // many algorithms would be unusable, whereas actually without the check they
+ // work
+ (void)(i++);
+
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r1(*i);
+ boost::ignore_unused_variable_warning(r1);
+
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r2(*(++i));
+ boost::ignore_unused_variable_warning(r2);
+ }
+ private:
+ Iterator i;
#endif
};
@@ -160,6 +181,20 @@ namespace boost {
BOOST_DEDUCED_TYPENAME ForwardIteratorConcept::traversal_category,
forward_traversal_tag
>));
+
+ BOOST_CONCEPT_USAGE(ForwardIteratorConcept)
+ {
+ // See the above note in the SinglePassIteratorConcept about the handling of the
+ // postfix increment. Since with forward and better iterators there is no need
+ // for a proxy, we can sensibly require that the dereference result
+ // is convertible to reference.
+ Iterator i2(i++);
+ boost::ignore_unused_variable_warning(i2);
+ BOOST_DEDUCED_TYPENAME boost::detail::iterator_traits<Iterator>::reference r(*(i++));
+ boost::ignore_unused_variable_warning(r);
+ }
+ private:
+ Iterator i;
#endif
};
diff --git a/3rdParty/Boost/src/boost/range/detail/begin.hpp b/3rdParty/Boost/src/boost/range/detail/begin.hpp
index 06c2561..f3da732 100644
--- a/3rdParty/Boost/src/boost/range/detail/begin.hpp
+++ b/3rdParty/Boost/src/boost/range/detail/begin.hpp
@@ -19,9 +19,9 @@
# include <boost/range/value_type.hpp>
#endif
-namespace boost
+namespace boost
{
-
+
namespace range_detail
{
template< typename T >
@@ -30,7 +30,7 @@ namespace boost
//////////////////////////////////////////////////////////////////////
// default
//////////////////////////////////////////////////////////////////////
-
+
template<>
struct range_begin<std_container_>
{
@@ -40,11 +40,11 @@ namespace boost
return c.begin();
};
};
-
+
//////////////////////////////////////////////////////////////////////
// pair
//////////////////////////////////////////////////////////////////////
-
+
template<>
struct range_begin<std_pair_>
{
@@ -54,11 +54,11 @@ namespace boost
return p.first;
}
};
-
+
//////////////////////////////////////////////////////////////////////
// array
//////////////////////////////////////////////////////////////////////
-
+
template<>
struct range_begin<array_>
{
@@ -78,14 +78,16 @@ namespace boost
};
} // namespace 'range_detail'
-
- template< typename C >
- inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
- begin( C& c )
+
+ namespace range_adl_barrier
{
- return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ begin( C& c )
+ {
+ return range_detail::range_begin< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ }
}
-
} // namespace 'boost'
diff --git a/3rdParty/Boost/src/boost/range/detail/end.hpp b/3rdParty/Boost/src/boost/range/detail/end.hpp
index d6a7368..8b5f35d 100644
--- a/3rdParty/Boost/src/boost/range/detail/end.hpp
+++ b/3rdParty/Boost/src/boost/range/detail/end.hpp
@@ -24,7 +24,7 @@
# include <boost/range/detail/remove_extent.hpp>
# endif
-namespace boost
+namespace boost
{
namespace range_detail
{
@@ -34,39 +34,39 @@ namespace boost
//////////////////////////////////////////////////////////////////////
// default
//////////////////////////////////////////////////////////////////////
-
+
template<>
struct range_end<std_container_>
{
template< typename C >
- static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
fun( C& c )
{
return c.end();
};
};
-
+
//////////////////////////////////////////////////////////////////////
// pair
//////////////////////////////////////////////////////////////////////
-
+
template<>
struct range_end<std_pair_>
{
template< typename P >
- static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type
+ static BOOST_RANGE_DEDUCED_TYPENAME range_iterator<P>::type
fun( const P& p )
{
return p.second;
}
};
-
+
//////////////////////////////////////////////////////////////////////
// array
//////////////////////////////////////////////////////////////////////
-
+
template<>
- struct range_end<array_>
+ struct range_end<array_>
{
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1310)
template< typename T, std::size_t sz >
@@ -82,16 +82,19 @@ namespace boost
}
#endif
};
-
+
} // namespace 'range_detail'
-
- template< typename C >
- inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
- end( C& c )
+
+ namespace range_adl_barrier
{
- return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
- }
-
+ template< typename C >
+ inline BOOST_RANGE_DEDUCED_TYPENAME range_iterator<C>::type
+ end( C& c )
+ {
+ return range_detail::range_end< BOOST_RANGE_DEDUCED_TYPENAME range_detail::range<C>::type >::fun( c );
+ }
+ } // namespace range_adl_barrier
+
} // namespace 'boost'
# endif // VC6
diff --git a/3rdParty/Boost/src/boost/range/detail/safe_bool.hpp b/3rdParty/Boost/src/boost/range/detail/safe_bool.hpp
new file mode 100644
index 0000000..182e510
--- /dev/null
+++ b/3rdParty/Boost/src/boost/range/detail/safe_bool.hpp
@@ -0,0 +1,72 @@
+// This header intentionally has no include guards.
+//
+// Copyright (c) 2010 Neil Groves
+// 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
+//
+// This code utilises the experience gained during the evolution of
+// <boost/smart_ptr/operator_bool.hpp>
+#ifndef BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP
+#define BOOST_RANGE_SAFE_BOOL_INCLUDED_HPP
+
+#include <boost/config.hpp>
+#include <boost/range/config.hpp>
+
+namespace boost
+{
+ namespace range_detail
+ {
+
+template<class DataMemberPtr>
+class safe_bool
+{
+public:
+ typedef safe_bool this_type;
+
+#if (defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, < 0x570)) || defined(__CINT_)
+ typedef bool unspecified_bool_type;
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
+ {
+ return x;
+ }
+#elif defined(_MANAGED)
+ static void unspecified_bool(this_type***)
+ {
+ }
+ typedef void(*unspecified_bool_type)(this_type***);
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
+ {
+ return x ? unspecified_bool : 0;
+ }
+#elif \
+ ( defined(__MWERKS__) && BOOST_WORKAROUND(__MWERKS__, < 0x3200) ) || \
+ ( defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ < 304) ) || \
+ ( defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x590) )
+
+ typedef bool (this_type::*unspecified_bool_type)() const;
+
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr)
+ {
+ return x ? &this_type::detail_safe_bool_member_fn : 0;
+ }
+private:
+ bool detail_safe_bool_member_fn() const { return false; }
+#else
+ typedef DataMemberPtr unspecified_bool_type;
+ static unspecified_bool_type to_unspecified_bool(const bool x, DataMemberPtr p)
+ {
+ return x ? p : 0;
+ }
+#endif
+private:
+ safe_bool();
+ safe_bool(const safe_bool&);
+ void operator=(const safe_bool&);
+ ~safe_bool();
+};
+
+ } // namespace range_detail
+} // namespace boost
+
+#endif // include guard
diff --git a/3rdParty/Boost/src/boost/range/end.hpp b/3rdParty/Boost/src/boost/range/end.hpp
index 3063c02..d5e6526 100644
--- a/3rdParty/Boost/src/boost/range/end.hpp
+++ b/3rdParty/Boost/src/boost/range/end.hpp
@@ -88,6 +88,9 @@ namespace range_detail
} // namespace 'range_detail'
#endif
+namespace range_adl_barrier
+{
+
template< class T >
inline BOOST_DEDUCED_TYPENAME range_iterator<T>::type end( T& r )
{
@@ -110,22 +113,24 @@ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const T& r )
return range_end( r );
}
+ } // namespace range_adl_barrier
} // namespace 'boost'
-
-
#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-
namespace boost
{
- template< class T >
- inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
- const_end( const T& r )
+ namespace range_adl_barrier
{
- return boost::end( r );
- }
-}
+ template< class T >
+ inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type
+ const_end( const T& r )
+ {
+ return boost::range_adl_barrier::end( r );
+ }
+ } // namespace range_adl_barrier
+ using namespace range_adl_barrier;
+} // namespace boost
#endif
diff --git a/3rdParty/Boost/src/boost/range/iterator_range_core.hpp b/3rdParty/Boost/src/boost/range/iterator_range_core.hpp
index 497b1e3..7ef7523 100755
--- a/3rdParty/Boost/src/boost/range/iterator_range_core.hpp
+++ b/3rdParty/Boost/src/boost/range/iterator_range_core.hpp
@@ -27,6 +27,7 @@
#include <boost/range/iterator.hpp>
#include <boost/range/difference_type.hpp>
#include <boost/range/algorithm/equal.hpp>
+#include <boost/range/detail/safe_bool.hpp>
#include <boost/utility/enable_if.hpp>
#include <iterator>
#include <algorithm>
@@ -81,7 +82,6 @@ namespace boost
struct range_tag { };
struct const_range_tag { };
-
}
// iterator range template class -----------------------------------------//
@@ -106,13 +106,14 @@ namespace boost
template<class IteratorT>
class iterator_range
{
+ typedef range_detail::safe_bool< IteratorT iterator_range<IteratorT>::* > safe_bool_t;
protected: // Used by sub_range
//! implementation class
typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
public:
-
//! this type
typedef iterator_range<IteratorT> type;
+ typedef BOOST_DEDUCED_TYPENAME safe_bool_t::unspecified_bool_type unspecified_bool_type;
//BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type);
//! Encapsulated value type
@@ -230,7 +231,7 @@ namespace boost
difference_type size() const
{
- return m_End - m_Begin;
+ return m_End - m_Begin;
}
bool empty() const
@@ -238,18 +239,15 @@ namespace boost
return m_Begin == m_End;
}
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
- operator bool() const
+ operator unspecified_bool_type() const
{
- return !empty();
+ return safe_bool_t::to_unspecified_bool(m_Begin != m_End, &iterator_range::m_Begin);
}
-#else
- typedef iterator (iterator_range::*unspecified_bool_type) () const;
- operator unspecified_bool_type() const
+
+ bool operator!() const
{
- return empty() ? 0: &iterator_range::end;
+ return empty();
}
-#endif
bool equal( const iterator_range& r ) const
{
@@ -290,6 +288,20 @@ namespace boost
return *--last;
}
+ // pop_front() - added to model the SinglePassRangePrimitiveConcept
+ void pop_front()
+ {
+ BOOST_ASSERT( !empty() );
+ ++m_Begin;
+ }
+
+ // pop_back() - added to model the BidirectionalRangePrimitiveConcept
+ void pop_back()
+ {
+ BOOST_ASSERT( !empty() );
+ --m_End;
+ }
+
reference operator[]( difference_type at ) const
{
BOOST_ASSERT( at >= 0 && at < size() );
diff --git a/3rdParty/Boost/src/boost/range/size.hpp b/3rdParty/Boost/src/boost/range/size.hpp
index 2b572d4..4b4eebe 100644
--- a/3rdParty/Boost/src/boost/range/size.hpp
+++ b/3rdParty/Boost/src/boost/range/size.hpp
@@ -15,6 +15,7 @@
# pragma once
#endif
+#include <boost/range/config.hpp>
#include <boost/range/begin.hpp>
#include <boost/range/end.hpp>
#include <boost/range/difference_type.hpp>
@@ -22,13 +23,28 @@
namespace boost
{
+ namespace range_detail
+ {
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange>::type
+ range_calculate_size(const SinglePassRange& rng)
+ {
+ BOOST_ASSERT( (boost::end(rng) - boost::begin(rng)) >= 0 &&
+ "reachability invariant broken!" );
+ return boost::end(rng) - boost::begin(rng);
+ }
+ }
- template< class T >
- inline BOOST_DEDUCED_TYPENAME range_difference<T>::type size( const T& r )
+ template<class SinglePassRange>
+ inline BOOST_DEDUCED_TYPENAME range_difference<SinglePassRange>::type
+ size(const SinglePassRange& rng)
{
- BOOST_ASSERT( (boost::end( r ) - boost::begin( r )) >= 0 &&
- "reachability invariant broken!" );
- return boost::end( r ) - boost::begin( r );
+#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
+ !BOOST_WORKAROUND(__GNUC__, < 3) \
+ /**/
+ using namespace range_detail;
+#endif
+ return range_calculate_size(rng);
}
} // namespace 'boost'
diff --git a/3rdParty/Boost/src/boost/serialization/access.hpp b/3rdParty/Boost/src/boost/serialization/access.hpp
deleted file mode 100644
index 40256d6..0000000
--- a/3rdParty/Boost/src/boost/serialization/access.hpp
+++ /dev/null
@@ -1,147 +0,0 @@
-#ifndef BOOST_SERIALIZATION_ACCESS_HPP
-#define BOOST_SERIALIZATION_ACCESS_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// access.hpp: interface for serialization system.
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-
-#include <boost/serialization/pfto.hpp>
-
-namespace boost {
-
-namespace archive {
-namespace detail {
- template<class Archive, class T>
- class iserializer;
- template<class Archive, class T>
- class oserializer;
-} // namespace detail
-} // namespace archive
-
-namespace serialization {
-
-// forward declarations
-template<class Archive, class T>
-inline void serialize_adl(Archive &, T &, const unsigned int);
-namespace detail {
- template<class Archive, class T>
- struct member_saver;
- template<class Archive, class T>
- struct member_loader;
-} // namespace detail
-
-// use an "accessor class so that we can use:
-// "friend class boost::serialization::access;"
-// in any serialized class to permit clean, safe access to private class members
-// by the serialization system
-
-class access {
-public:
- // grant access to "real" serialization defaults
-#ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
-public:
-#else
- template<class Archive, class T>
- friend struct detail::member_saver;
- template<class Archive, class T>
- friend struct detail::member_loader;
- template<class Archive, class T>
- friend class archive::detail::iserializer;
- template<class Archive, class T>
- friend class archive::detail::oserializer;
- template<class Archive, class T>
- friend inline void serialize(
- Archive & ar,
- T & t,
- const BOOST_PFTO unsigned int file_version
- );
- template<class Archive, class T>
- friend inline void save_construct_data(
- Archive & ar,
- const T * t,
- const BOOST_PFTO unsigned int file_version
- );
- template<class Archive, class T>
- friend inline void load_construct_data(
- Archive & ar,
- T * t,
- const BOOST_PFTO unsigned int file_version
- );
-#endif
-
- // pass calls to users's class implementation
- template<class Archive, class T>
- static void member_save(
- Archive & ar,
- //const T & t,
- T & t,
- const unsigned int file_version
- ){
- t.save(ar, file_version);
- }
- template<class Archive, class T>
- static void member_load(
- Archive & ar,
- T & t,
- const unsigned int file_version
- ){
- t.load(ar, file_version);
- }
- template<class Archive, class T>
- static void serialize(
- Archive & ar,
- T & t,
- const unsigned int file_version
- ){
- // note: if you get a compile time error here with a
- // message something like:
- // cannot convert parameter 1 from <file type 1> to <file type 2 &>
- // a likely possible cause is that the class T contains a
- // serialize function - but that serialize function isn't
- // a template and corresponds to a file type different than
- // the class Archive. To resolve this, don't include an
- // archive type other than that for which the serialization
- // function is defined!!!
- t.serialize(ar, file_version);
- }
- template<class T>
- static void destroy( const T * t) // const appropriate here?
- {
- // the const business is an MSVC 6.0 hack that should be
- // benign on everything else
- delete const_cast<T *>(t);
- }
- template<class T>
- static void construct(T * t){
- // default is inplace invocation of default constructor
- // Note the :: before the placement new. Required if the
- // class doesn't have a class-specific placement new defined.
- ::new(t)T;
- }
- template<class T, class U>
- static T & cast_reference(U & u){
- return static_cast<T &>(u);
- }
- template<class T, class U>
- static T * cast_pointer(U * u){
- return static_cast<T *>(u);
- }
-};
-
-} // namespace serialization
-} // namespace boost
-
-#endif // BOOST_SERIALIZATION_ACCESS_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/base_object.hpp b/3rdParty/Boost/src/boost/serialization/base_object.hpp
deleted file mode 100644
index b840d25..0000000
--- a/3rdParty/Boost/src/boost/serialization/base_object.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-#ifndef BOOST_SERIALIZATION_BASE_OBJECT_HPP
-#define BOOST_SERIALIZATION_BASE_OBJECT_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// base_object.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-// if no archive headers have been included this is a no op
-// this is to permit BOOST_EXPORT etc to be included in a
-// file declaration header
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/identity.hpp>
-
-#include <boost/type_traits/is_base_and_derived.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/is_polymorphic.hpp>
-
-#include <boost/static_assert.hpp>
-#include <boost/serialization/access.hpp>
-#include <boost/serialization/force_include.hpp>
-#include <boost/serialization/void_cast_fwd.hpp>
-
-namespace boost {
-namespace serialization {
-
-namespace detail
-{
- // get the base type for a given derived type
- // preserving the const-ness
- template<class B, class D>
- struct base_cast
- {
- typedef BOOST_DEDUCED_TYPENAME
- mpl::if_<
- is_const<D>,
- const B,
- B
- >::type type;
- BOOST_STATIC_ASSERT(is_const<type>::value == is_const<D>::value);
- };
-
- // only register void casts if the types are polymorphic
- template<class Base, class Derived>
- struct base_register
- {
- struct polymorphic {
- static void const * invoke(){
- Base const * const b = 0;
- Derived const * const d = 0;
- return & void_cast_register(d, b);
- }
- };
- struct non_polymorphic {
- static void const * invoke(){
- return 0;
- }
- };
- static void const * invoke(){
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_polymorphic<Base>,
- mpl::identity<polymorphic>,
- mpl::identity<non_polymorphic>
- >::type type;
- return type::invoke();
- }
- };
-
-} // namespace detail
-#if defined(__BORLANDC__) && __BORLANDC__ < 0x610
-template<class Base, class Derived>
-const Base &
-base_object(const Derived & d)
-{
- BOOST_STATIC_ASSERT(! is_pointer<Derived>::value);
- detail::base_register<Base, Derived>::invoke();
- return access::cast_reference<const Base, Derived>(d);
-}
-#else
-template<class Base, class Derived>
-BOOST_DEDUCED_TYPENAME detail::base_cast<Base, Derived>::type &
-base_object(Derived &d)
-{
- BOOST_STATIC_ASSERT(( is_base_and_derived<Base,Derived>::value));
- BOOST_STATIC_ASSERT(! is_pointer<Derived>::value);
- typedef BOOST_DEDUCED_TYPENAME detail::base_cast<Base, Derived>::type type;
- detail::base_register<type, Derived>::invoke();
- return access::cast_reference<type, Derived>(d);
-}
-#endif
-
-} // namespace serialization
-} // namespace boost
-
-#endif // BOOST_SERIALIZATION_BASE_OBJECT_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/collection_size_type.hpp b/3rdParty/Boost/src/boost/serialization/collection_size_type.hpp
deleted file mode 100644
index 2dd8fa7..0000000
--- a/3rdParty/Boost/src/boost/serialization/collection_size_type.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef BOOST_SERIALIZATION_COLLECTION_SIZE_TYPE_HPP
-#define BOOST_SERIALIZATION_COLLECTION_SIZE_TYPE_HPP
-
-// (C) Copyright 2005 Matthias Troyer
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <cstddef> // size_t
-#include <boost/serialization/strong_typedef.hpp>
-#include <boost/serialization/level.hpp>
-#include <boost/serialization/split_free.hpp>
-#include <boost/serialization/is_bitwise_serializable.hpp>
-
-namespace boost {
-namespace serialization {
-
-//BOOST_STRONG_TYPEDEF(std::size_t, collection_size_type)
-
-class collection_size_type {
-private:
- typedef std::size_t base_type;
- base_type t;
-public:
- collection_size_type(): t(0) {};
- explicit collection_size_type(const std::size_t & t_) :
- t(t_)
- {}
- collection_size_type(const collection_size_type & t_) :
- t(t_.t)
- {}
- collection_size_type & operator=(const collection_size_type & rhs){
- t = rhs.t;
- return *this;
- }
- collection_size_type & operator=(const unsigned int & rhs){
- t = rhs;
- return *this;
- }
- // used for text output
- operator base_type () const {
- return t;
- }
- // used for text input
- operator base_type & () {
- return t;
- }
- bool operator==(const collection_size_type & rhs) const {
- return t == rhs.t;
- }
- bool operator<(const collection_size_type & rhs) const {
- return t < rhs.t;
- }
-};
-
-
-} } // end namespace boost::serialization
-
-BOOST_CLASS_IMPLEMENTATION(collection_size_type, primitive_type)
-BOOST_IS_BITWISE_SERIALIZABLE(collection_size_type)
-
-#endif //BOOST_SERIALIZATION_COLLECTION_SIZE_TYPE_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/force_include.hpp b/3rdParty/Boost/src/boost/serialization/force_include.hpp
deleted file mode 100644
index a18a8a1..0000000
--- a/3rdParty/Boost/src/boost/serialization/force_include.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef BOOST_SERIALIZATION_FORCE_INCLUDE_HPP
-#define BOOST_SERIALIZATION_FORCE_INCLUDE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// force_include.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-
-// the following help macro is to guarentee that certain coded
-// is not removed by over-eager linker optimiser. In certain cases
-// we create static objects must be created but are actually never
-// referenced - creation has a side-effect such as global registration
-// which is important to us. We make an effort to refer these objects
-// so that a smart linker won't remove them as being unreferenced.
-// In microsoft compilers, inlining the code that does the referring
-// means the code gets lost and the static object is not included
-// in the library and hence never registered. This manifests itself
-// in an ungraceful crash at runtime when (and only when) built in
-// release mode.
-
-#if defined(BOOST_HAS_DECLSPEC) && !defined(__COMO__)
-# if defined(__BORLANDC__)
-# define BOOST_DLLEXPORT __export
-# else
-# define BOOST_DLLEXPORT __declspec(dllexport)
-# endif
-#elif ! defined(_WIN32) && ! defined(_WIN64)
-# if defined(__MWERKS__)
-# define BOOST_DLLEXPORT __declspec(dllexport)
-# elif defined(__GNUC__) && (__GNUC__ >= 3)
-# define BOOST_USED __attribute__ ((used))
-# elif defined(__IBMCPP__) && (__IBMCPP__ >= 1110)
-# define BOOST_USED __attribute__ ((used))
-# elif defined(__INTEL_COMPILER) && (BOOST_INTEL_CXX_VERSION >= 800)
-# define BOOST_USED __attribute__ ((used))
-# endif
-#endif
-
-#ifndef BOOST_USED
-# define BOOST_USED
-#endif
-
-#ifndef BOOST_DLLEXPORT
-# define BOOST_DLLEXPORT
-#endif
-
-#endif // BOOST_SERIALIZATION_FORCE_INCLUDE_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/is_bitwise_serializable.hpp b/3rdParty/Boost/src/boost/serialization/is_bitwise_serializable.hpp
deleted file mode 100644
index 34eec40..0000000
--- a/3rdParty/Boost/src/boost/serialization/is_bitwise_serializable.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// (C) Copyright 2007 Matthias Troyer
-
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// Authors: Matthias Troyer
-
-/** @file is_bitwise_serializable.hpp
- *
- * This header provides a traits class for determining whether a class
- * can be serialized (in a non-portable way) just by copying the bits.
- */
-
-
-#ifndef BOOST_SERIALIZATION_IS_BITWISE_SERIALIZABLE_HPP
-#define BOOST_SERIALIZATION_IS_BITWISE_SERIALIZABLE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-#include <boost/mpl/bool.hpp>
-#include <boost/type_traits/is_arithmetic.hpp>
-
-namespace boost {
-namespace serialization {
- template<class T>
- struct is_bitwise_serializable
- : public is_arithmetic< T >
- {};
-} // namespace serialization
-} // namespace boost
-
-
-// define a macro to make explicit designation of this more transparent
-#define BOOST_IS_BITWISE_SERIALIZABLE(T) \
-namespace boost { \
-namespace serialization { \
-template<> \
-struct is_bitwise_serializable< T > : mpl::true_ {}; \
-}} \
-/**/
-
-#endif //BOOST_SERIALIZATION_IS_BITWISE_SERIALIZABLE_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/level.hpp b/3rdParty/Boost/src/boost/serialization/level.hpp
deleted file mode 100644
index ce507b2..0000000
--- a/3rdParty/Boost/src/boost/serialization/level.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-#ifndef BOOST_SERIALIZATION_LEVEL_HPP
-#define BOOST_SERIALIZATION_LEVEL_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// level.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#include <boost/type_traits/is_fundamental.hpp>
-#include <boost/type_traits/is_enum.hpp>
-#include <boost/type_traits/is_array.hpp>
-#include <boost/type_traits/is_class.hpp>
-#include <boost/type_traits/is_base_and_derived.hpp>
-
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/integral_c.hpp>
-#include <boost/mpl/integral_c_tag.hpp>
-#include <boost/mpl/aux_/nttp_decl.hpp>
-
-#include <boost/serialization/level_enum.hpp>
-
-namespace boost {
-namespace serialization {
-
-struct basic_traits;
-
-// default serialization implementation level
-template<class T>
-struct implementation_level_impl {
- template<class U>
- struct traits_class_level {
- typedef BOOST_DEDUCED_TYPENAME U::level type;
- };
-
- typedef mpl::integral_c_tag tag;
- // note: at least one compiler complained w/o the full qualification
- // on basic traits below
- typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_base_and_derived<boost::serialization::basic_traits, T>,
- traits_class_level< T >,
- //else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_fundamental< T >,
- mpl::int_<primitive_type>,
- //else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_class< T >,
- mpl::int_<object_class_info>,
- //else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_array< T >,
- #if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x560))
- mpl::int_<not_serializable>,
- #else
- mpl::int_<object_serializable>,
- #endif
- //else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_enum< T >,
- //#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x560))
- // mpl::int_<not_serializable>,
- //#else
- mpl::int_<primitive_type>,
- //#endif
- //else
- mpl::int_<not_serializable>
- >
- >
- >
- >
- >::type type;
- // vc 7.1 doesn't like enums here
- BOOST_STATIC_CONSTANT(int, value = type::value);
-};
-
-template<class T>
-struct implementation_level :
- public implementation_level_impl<const T>
-{
-};
-
-template<class T, BOOST_MPL_AUX_NTTP_DECL(int, L) >
-inline bool operator>=(implementation_level< T > t, enum level_type l)
-{
- return t.value >= (int)l;
-}
-
-} // namespace serialization
-} // namespace boost
-
-// specify the level of serialization implementation for the class
-// require that class info saved when versioning is used
-#define BOOST_CLASS_IMPLEMENTATION(T, E) \
- namespace boost { \
- namespace serialization { \
- template <> \
- struct implementation_level_impl< const T > \
- { \
- typedef mpl::integral_c_tag tag; \
- typedef mpl::int_< E > type; \
- BOOST_STATIC_CONSTANT( \
- int, \
- value = implementation_level_impl::type::value \
- ); \
- }; \
- } \
- }
- /**/
-
-#endif // BOOST_SERIALIZATION_LEVEL_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/level_enum.hpp b/3rdParty/Boost/src/boost/serialization/level_enum.hpp
deleted file mode 100644
index 11bd17f..0000000
--- a/3rdParty/Boost/src/boost/serialization/level_enum.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef BOOST_SERIALIZATION_LEVEL_ENUM_HPP
-#define BOOST_SERIALIZATION_LEVEL_ENUM_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// level_enum.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-namespace boost {
-namespace serialization {
-
-// for each class used in the program, specify which level
-// of serialization should be implemented
-
-// names for each level
-enum level_type
-{
- // Don't serialize this type. An attempt to do so should
- // invoke a compile time assertion.
- not_serializable = 0,
- // write/read this type directly to the archive. In this case
- // serialization code won't be called. This is the default
- // case for fundamental types. It presumes a member function or
- // template in the archive class that can handle this type.
- // there is no runtime overhead associated reading/writing
- // instances of this level
- primitive_type = 1,
- // Serialize the objects of this type using the objects "serialize"
- // function or template. This permits values to be written/read
- // to/from archives but includes no class or version information.
- object_serializable = 2,
- ///////////////////////////////////////////////////////////////////
- // once an object is serialized at one of the above levels, the
- // corresponding archives cannot be read if the implementation level
- // for the archive object is changed.
- ///////////////////////////////////////////////////////////////////
- // Add class information to the archive. Class information includes
- // implementation level, class version and class name if available
- object_class_info = 3
-};
-
-} // namespace serialization
-} // namespace boost
-
-#endif // BOOST_SERIALIZATION_LEVEL_ENUM_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/nvp.hpp b/3rdParty/Boost/src/boost/serialization/nvp.hpp
deleted file mode 100644
index 2d7f4ed..0000000
--- a/3rdParty/Boost/src/boost/serialization/nvp.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-#ifndef BOOST_SERIALIZATION_NVP_HPP
-#define BOOST_SERIALIZATION_NVP_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// nvp.hpp: interface for serialization system.
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <utility>
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-// supress noise
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1200)
-# pragma warning (disable : 4786) // too long name, harmless warning
-#endif
-
-#include <boost/mpl/integral_c.hpp>
-#include <boost/mpl/integral_c_tag.hpp>
-
-#include <boost/serialization/level.hpp>
-#include <boost/serialization/tracking.hpp>
-#include <boost/serialization/split_member.hpp>
-#include <boost/serialization/base_object.hpp>
-#include <boost/serialization/traits.hpp>
-#include <boost/serialization/wrapper.hpp>
-
-namespace boost {
-namespace serialization {
-
-template<class T>
-struct nvp :
- public std::pair<const char *, T *>,
- public wrapper_traits<const nvp< T > >
-{
- explicit nvp(const char * name_, T & t) :
- // note: redundant cast works around borland issue
- // note: added _ to suppress useless gcc warning
- std::pair<const char *, T *>(name_, (T*)(& t))
- {}
- nvp(const nvp & rhs) :
- // note: redundant cast works around borland issue
- std::pair<const char *, T *>(rhs.first, (T*)rhs.second)
- {}
-
- const char * name() const {
- return this->first;
- }
- T & value() const {
- return *(this->second);
- }
-
- const T & const_value() const {
- return *(this->second);
- }
-
- // True64 compiler complains with a warning about the use of
- // the name "Archive" hiding some higher level usage. I'm sure this
- // is an error but I want to accomodated as it generates a long warning
- // listing and might be related to a lot of test failures.
- // default treatment for name-value pairs. The name is
- // just discarded and only the value is serialized.
- template<class Archivex>
- void save(
- Archivex & ar,
- const unsigned int /* file_version */
- ) const {
- // CodeWarrior 8.x can't seem to resolve the << op for a rhs of "const T *"
- ar.operator<<(const_value());
- }
- template<class Archivex>
- void load(
- Archivex & ar,
- const unsigned int /* file_version */
- ){
- // CodeWarrior 8.x can't seem to resolve the >> op for a rhs of "const T *"
- ar.operator>>(value());
- }
- BOOST_SERIALIZATION_SPLIT_MEMBER()
-};
-
-template<class T>
-inline
-#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
-const
-#endif
-nvp< T > make_nvp(const char * name, T & t){
- return nvp< T >(name, t);
-}
-
-// to maintain efficiency and portability, we want to assign
-// specific serialization traits to all instances of this wrappers.
-// we can't strait forward method below as it depends upon
-// Partial Template Specialization and doing so would mean that wrappers
-// wouldn't be treated the same on different platforms. This would
-// break archive portability. Leave this here as reminder not to use it !!!
-#if 0 // #ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-
-template <class T>
-struct implementation_level<nvp< T > >
-{
- typedef mpl::integral_c_tag tag;
- typedef mpl::int_<object_serializable> type;
- BOOST_STATIC_CONSTANT(int, value = implementation_level::type::value);
-};
-
-// nvp objects are generally created on the stack and are never tracked
-template<class T>
-struct tracking_level<nvp< T > >
-{
- typedef mpl::integral_c_tag tag;
- typedef mpl::int_<track_never> type;
- BOOST_STATIC_CONSTANT(int, value = tracking_level::type::value);
-};
-
-#endif
-
-} // seralization
-} // boost
-
-#include <boost/preprocessor/stringize.hpp>
-
-#define BOOST_SERIALIZATION_NVP(name) \
- boost::serialization::make_nvp(BOOST_PP_STRINGIZE(name), name)
-/**/
-
-#define BOOST_SERIALIZATION_BASE_OBJECT_NVP(name) \
- boost::serialization::make_nvp( \
- BOOST_PP_STRINGIZE(name), \
- boost::serialization::base_object<name >(*this) \
- )
-/**/
-
-#endif // BOOST_SERIALIZATION_NVP_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/pfto.hpp b/3rdParty/Boost/src/boost/serialization/pfto.hpp
deleted file mode 100644
index 8d98463..0000000
--- a/3rdParty/Boost/src/boost/serialization/pfto.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-#ifndef BOOST_SERIALIZATION_PFTO_HPP
-#define BOOST_SERIALIZATION_PFTO_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// pfto.hpp: workarounds for compilers which have problems supporting
-// Partial Function Template Ordering (PFTO).
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
-// PFTO version is used to specify the last argument of certain functions
-// Function it is used to support compilers that fail to support correct Partial
-// Template Ordering
-#include <boost/config.hpp>
-
-// some compilers can use an exta argument and use function overloading
-// to choose desired function. This extra argument is long in the default
-// function implementation and int for the rest. The function is called
-// with an int argument. This first attempts to match functions with an
-// int argument before the default one (with a long argument). This is
-// known to function with VC 6.0. On other compilers this fails (Borland)
-// or causes other problems (GCC). note: this
-
-#if defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- #define BOOST_PFTO long
-#else
- #define BOOST_PFTO
-#endif
-
-// here's another approach. Rather than use a default function - make sure
-// there is no default at all by requiring that all function invocations
-// have a "wrapped" argument type. This solves a problem with VC 6.0
-// (and perhaps others) while implementing templated constructors.
-
-namespace boost {
-namespace serialization {
-
-template<class T>
-struct pfto_wrapper {
- const T & t;
- operator const T & (){
- return t;
- }
- pfto_wrapper (const T & rhs) : t(rhs) {}
-};
-
-template<class T>
-pfto_wrapper< T > make_pfto_wrapper(const T & t, BOOST_PFTO int){
- return pfto_wrapper< T >(t);
-}
-
-template<class T>
-pfto_wrapper< T > make_pfto_wrapper(const pfto_wrapper< T > & t, int){
- return t;
-}
-
-} // namespace serialization
-} // namespace boost
-
-#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
- #define BOOST_PFTO_WRAPPER(T) \
- boost::serialization::pfto_wrapper< T >
- #define BOOST_MAKE_PFTO_WRAPPER(t) \
- boost::serialization::make_pfto_wrapper(t, 0)
-#else
- #define BOOST_PFTO_WRAPPER(T) T
- #define BOOST_MAKE_PFTO_WRAPPER(t) t
-#endif
-
-#endif // BOOST_SERIALIZATION_PFTO_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/serialization.hpp b/3rdParty/Boost/src/boost/serialization/serialization.hpp
deleted file mode 100644
index f17e8dd..0000000
--- a/3rdParty/Boost/src/boost/serialization/serialization.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-#ifndef BOOST_SERIALIZATION_SERIALIZATION_HPP
-#define BOOST_SERIALIZATION_SERIALIZATION_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1310)
-# pragma warning (disable : 4675) // suppress ADL warning
-#endif
-
-#include <boost/config.hpp>
-#include <boost/serialization/strong_typedef.hpp>
-#include <boost/serialization/pfto.hpp>
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// serialization.hpp: interface for serialization system.
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-//////////////////////////////////////////////////////////////////////
-// public interface to serialization.
-
-/////////////////////////////////////////////////////////////////////////////
-// layer 0 - intrusive verison
-// declared and implemented for each user defined class to be serialized
-//
-// template<Archive>
-// serialize(Archive &ar, const unsigned int file_version){
-// ar & base_object<base>(*this) & member1 & member2 ... ;
-// }
-
-/////////////////////////////////////////////////////////////////////////////
-// layer 1 - layer that routes member access through the access class.
-// this is what permits us to grant access to private class member functions
-// by specifying friend class boost::serialization::access
-
-#include <boost/serialization/access.hpp>
-
-/////////////////////////////////////////////////////////////////////////////
-// layer 2 - default implementation of non-intrusive serialization.
-//
-// note the usage of function overloading to compensate that C++ does not
-// currently support Partial Template Specialization for function templates
-// We have declared the version number as "const unsigned long".
-// Overriding templates for specific data types should declare the version
-// number as "const unsigned int". Template matching will first be applied
-// to functions with the same version types - that is the overloads.
-// If there is no declared function prototype that matches, the second argument
-// will be converted to "const unsigned long" and a match will be made with
-// one of the default template functions below.
-
-namespace boost {
-namespace serialization {
-
-BOOST_STRONG_TYPEDEF(unsigned int, version_type)
-
-// default implementation - call the member function "serialize"
-template<class Archive, class T>
-inline void serialize(
- Archive & ar, T & t, const BOOST_PFTO unsigned int file_version
-){
- access::serialize(ar, t, static_cast<unsigned int>(file_version));
-}
-
-// save data required for construction
-template<class Archive, class T>
-inline void save_construct_data(
- Archive & /*ar*/,
- const T * /*t*/,
- const BOOST_PFTO unsigned int /*file_version */
-){
- // default is to save no data because default constructor
- // requires no arguments.
-}
-
-// load data required for construction and invoke constructor in place
-template<class Archive, class T>
-inline void load_construct_data(
- Archive & /*ar*/,
- T * t,
- const BOOST_PFTO unsigned int /*file_version*/
-){
- // default just uses the default constructor. going
- // through access permits usage of otherwise private default
- // constructor
- access::construct(t);
-}
-
-/////////////////////////////////////////////////////////////////////////////
-// layer 3 - move call into serialization namespace so that ADL will function
-// in the manner we desire.
-//
-// on compilers which don't implement ADL. only the current namespace
-// i.e. boost::serialization will be searched.
-//
-// on compilers which DO implement ADL
-// serialize overrides can be in any of the following
-//
-// 1) same namepace as Archive
-// 2) same namespace as T
-// 3) boost::serialization
-//
-// Due to Martin Ecker
-
-template<class Archive, class T>
-inline void serialize_adl(
- Archive & ar,
- T & t,
- const unsigned int file_version
-){
- // note usage of function overloading to delay final resolution
- // until the point of instantiation. This works around the two-phase
- // lookup "feature" which inhibits redefintion of a default function
- // template implementation. Due to Robert Ramey
- //
- // Note that this trick generates problems for compiles which don't support
- // PFTO, suppress it here. As far as we know, there are no compilers
- // which fail to support PFTO while supporting two-phase lookup.
- #if ! defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- const version_type v(file_version);
- serialize(ar, t, v);
- #else
- serialize(ar, t, file_version);
- #endif
-}
-
-template<class Archive, class T>
-inline void save_construct_data_adl(
- Archive & ar,
- const T * t,
- const unsigned int file_version
-){
- // see above
- #if ! defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- const version_type v(file_version);
- save_construct_data(ar, t, v);
- #else
- save_construct_data(ar, t, file_version);
- #endif
-}
-
-template<class Archive, class T>
-inline void load_construct_data_adl(
- Archive & ar,
- T * t,
- const unsigned int file_version
-){
- // see above comment
- #if ! defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
- const version_type v(file_version);
- load_construct_data(ar, t, v);
- #else
- load_construct_data(ar, t, file_version);
- #endif
-}
-
-} // namespace serialization
-} // namespace boost
-
-#endif //BOOST_SERIALIZATION_SERIALIZATION_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/split_free.hpp b/3rdParty/Boost/src/boost/serialization/split_free.hpp
deleted file mode 100644
index 9dbcd2f..0000000
--- a/3rdParty/Boost/src/boost/serialization/split_free.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-#ifndef BOOST_SERIALIZATION_SPLIT_FREE_HPP
-#define BOOST_SERIALIZATION_SPLIT_FREE_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// split_free.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/serialization/serialization.hpp>
-
-namespace boost {
-namespace archive {
- namespace detail {
- template<class Archive> class interface_oarchive;
- template<class Archive> class interface_iarchive;
- } // namespace detail
-} // namespace archive
-
-namespace serialization {
-
-//namespace detail {
-template<class Archive, class T>
-struct free_saver {
- static void invoke(
- Archive & ar,
- const T & t,
- const unsigned int file_version
- ){
- // use function overload (version_type) to workaround
- // two-phase lookup issue
- const version_type v(file_version);
- save(ar, t, v);
- }
-};
-template<class Archive, class T>
-struct free_loader {
- static void invoke(
- Archive & ar,
- T & t,
- const unsigned int file_version
- ){
- // use function overload (version_type) to workaround
- // two-phase lookup issue
- const version_type v(file_version);
- load(ar, t, v);
- }
-};
-//} // namespace detail
-
-template<class Archive, class T>
-inline void split_free(
- Archive & ar,
- T & t,
- const unsigned int file_version
-){
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- BOOST_DEDUCED_TYPENAME Archive::is_saving,
- mpl::identity</* detail:: */ free_saver<Archive, T> >,
- mpl::identity</* detail:: */ free_loader<Archive, T> >
- >::type typex;
- typex::invoke(ar, t, file_version);
-}
-
-} // namespace serialization
-} // namespace boost
-
-#define BOOST_SERIALIZATION_SPLIT_FREE(T) \
-namespace boost { namespace serialization { \
-template<class Archive> \
-inline void serialize( \
- Archive & ar, \
- T & t, \
- const unsigned int file_version \
-){ \
- split_free(ar, t, file_version); \
-} \
-}}
-/**/
-
-#endif // BOOST_SERIALIZATION_SPLIT_FREE_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/split_member.hpp b/3rdParty/Boost/src/boost/serialization/split_member.hpp
deleted file mode 100644
index 6987945..0000000
--- a/3rdParty/Boost/src/boost/serialization/split_member.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#ifndef BOOST_SERIALIZATION_SPLIT_MEMBER_HPP
-#define BOOST_SERIALIZATION_SPLIT_MEMBER_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// split_member.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-
-#include <boost/serialization/access.hpp>
-
-namespace boost {
-namespace archive {
- namespace detail {
- template<class Archive> class interface_oarchive;
- template<class Archive> class interface_iarchive;
- } // namespace detail
-} // namespace archive
-
-namespace serialization {
-namespace detail {
-
- template<class Archive, class T>
- struct member_saver {
- static void invoke(
- Archive & ar,
- const T & t,
- const unsigned int file_version
- ){
- access::member_save(ar, t, file_version);
- }
- };
-
- template<class Archive, class T>
- struct member_loader {
- static void invoke(
- Archive & ar,
- T & t,
- const unsigned int file_version
- ){
- access::member_load(ar, t, file_version);
- }
- };
-
-} // detail
-
-template<class Archive, class T>
-inline void split_member(
- Archive & ar, T & t, const unsigned int file_version
-){
- typedef BOOST_DEDUCED_TYPENAME mpl::eval_if<
- BOOST_DEDUCED_TYPENAME Archive::is_saving,
- mpl::identity<detail::member_saver<Archive, T> >,
- mpl::identity<detail::member_loader<Archive, T> >
- >::type typex;
- typex::invoke(ar, t, file_version);
-}
-
-} // namespace serialization
-} // namespace boost
-
-// split member function serialize funcition into save/load
-#define BOOST_SERIALIZATION_SPLIT_MEMBER() \
-template<class Archive> \
-void serialize( \
- Archive &ar, \
- const unsigned int file_version \
-){ \
- boost::serialization::split_member(ar, *this, file_version); \
-} \
-/**/
-
-#endif // BOOST_SERIALIZATION_SPLIT_MEMBER_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/strong_typedef.hpp b/3rdParty/Boost/src/boost/serialization/strong_typedef.hpp
deleted file mode 100644
index 647c302..0000000
--- a/3rdParty/Boost/src/boost/serialization/strong_typedef.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-#ifndef BOOST_SERIALIZATION_STRONG_TYPEDEF_HPP
-#define BOOST_SERIALIZATION_STRONG_TYPEDEF_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// strong_typedef.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/serialization for updates, documentation, and revision history.
-
-// macro used to implement a strong typedef. strong typedef
-// guarentees that two types are distinguised even though the
-// share the same underlying implementation. typedef does not create
-// a new type. BOOST_STRONG_TYPEDEF(T, D) creates a new type named D
-// that operates as a type T.
-
-#include <boost/config.hpp>
-#include <boost/operators.hpp>
-
-#if !defined(__BORLANDC__) || __BORLANDC__ >= 0x590
- #define BOOST_STRONG_TYPEDEF(T, D) \
- struct D \
- : boost::totally_ordered1< D \
- , boost::totally_ordered2< D, T \
- > > \
- { \
- T t; \
- explicit D(const T t_) : t(t_) {}; \
- D(){}; \
- D(const D & t_) : t(t_.t){} \
- D & operator=(const D & rhs) { t = rhs.t; return *this;} \
- D & operator=(const T & rhs) { t = rhs; return *this;} \
- operator const T & () const {return t; } \
- operator T & () { return t; } \
- bool operator==(const D & rhs) const { return t == rhs.t; } \
- bool operator<(const D & rhs) const { return t < rhs.t; } \
- };
-#else
- #define BOOST_STRONG_TYPEDEF(T, D) \
- struct D \
- : boost::totally_ordered1< D \
- , boost::totally_ordered2< D, T \
- > > \
- { \
- T t; \
- explicit D(const T t_) : t(t_) {}; \
- D(){}; \
- D(const D & t_) : t(t_.t){} \
- D & operator=(const D & rhs) { t = rhs.t; return *this;} \
- D & operator=(const T & rhs) { t = rhs; return *this;} \
- /*operator const T & () const {return t; }*/ \
- operator T & () { return t; } \
- bool operator==(const D & rhs) const { return t == rhs.t; } \
- bool operator<(const D & rhs) const { return t < rhs.t; } \
- };
-#endif // !defined(__BORLANDC) || __BORLANDC__ >= 0x590
-
-#endif // BOOST_SERIALIZATION_STRONG_TYPEDEF_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/tracking.hpp b/3rdParty/Boost/src/boost/serialization/tracking.hpp
deleted file mode 100644
index fadcbd0..0000000
--- a/3rdParty/Boost/src/boost/serialization/tracking.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef BOOST_SERIALIZATION_TRACKING_HPP
-#define BOOST_SERIALIZATION_TRACKING_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// tracking.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/mpl/greater.hpp>
-#include <boost/mpl/integral_c_tag.hpp>
-
-#include <boost/type_traits/is_base_and_derived.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/serialization/level.hpp>
-#include <boost/serialization/tracking_enum.hpp>
-#include <boost/serialization/type_info_implementation.hpp>
-
-namespace boost {
-namespace serialization {
-
-struct basic_traits;
-
-// default tracking level
-template<class T>
-struct tracking_level_impl {
- template<class U>
- struct traits_class_tracking {
- typedef BOOST_DEDUCED_TYPENAME U::tracking type;
- };
- typedef mpl::integral_c_tag tag;
- // note: at least one compiler complained w/o the full qualification
- // on basic traits below
- typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_base_and_derived<boost::serialization::basic_traits, T>,
- traits_class_tracking< T >,
- //else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_pointer< T >,
- // pointers are not tracked by default
- mpl::int_<track_never>,
- //else
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- // for primitives
- BOOST_DEDUCED_TYPENAME mpl::equal_to<
- implementation_level< T >,
- mpl::int_<primitive_type>
- >,
- // is never
- mpl::int_<track_never>,
- // otherwise its selective
- mpl::int_<track_selectively>
- > > >::type type;
- BOOST_STATIC_CONSTANT(int, value = type::value);
-};
-
-template<class T>
-struct tracking_level :
- public tracking_level_impl<const T>
-{
-};
-
-template<class T, enum tracking_type L>
-inline bool operator>=(tracking_level< T > t, enum tracking_type l)
-{
- return t.value >= (int)l;
-}
-
-} // namespace serialization
-} // namespace boost
-
-
-// The STATIC_ASSERT is prevents one from setting tracking for a primitive type.
-// This almost HAS to be an error. Doing this will effect serialization of all
-// char's in your program which is almost certainly what you don't want to do.
-// If you want to track all instances of a given primitive type, You'll have to
-// wrap it in your own type so its not a primitive anymore. Then it will compile
-// without problem.
-#define BOOST_CLASS_TRACKING(T, E) \
-namespace boost { \
-namespace serialization { \
-template<> \
-struct tracking_level< T > \
-{ \
- typedef mpl::integral_c_tag tag; \
- typedef mpl::int_< E> type; \
- BOOST_STATIC_CONSTANT( \
- int, \
- value = tracking_level::type::value \
- ); \
- /* tracking for a class */ \
- BOOST_STATIC_ASSERT(( \
- mpl::greater< \
- /* that is a prmitive */ \
- implementation_level< T >, \
- mpl::int_<primitive_type> \
- >::value \
- )); \
-}; \
-}}
-
-#endif // BOOST_SERIALIZATION_TRACKING_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/tracking_enum.hpp b/3rdParty/Boost/src/boost/serialization/tracking_enum.hpp
deleted file mode 100644
index e4e4e21..0000000
--- a/3rdParty/Boost/src/boost/serialization/tracking_enum.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-#ifndef BOOST_SERIALIZATION_TRACKING_ENUM_HPP
-#define BOOST_SERIALIZATION_TRACKING_ENUM_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// tracking_enum.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-namespace boost {
-namespace serialization {
-
-// addresses of serialized objects may be tracked to avoid saving/loading
-// redundant copies. This header defines a class trait that can be used
-// to specify when objects should be tracked
-
-// names for each tracking level
-enum tracking_type
-{
- // never track this type
- track_never = 0,
- // track objects of this type if the object is serialized through a
- // pointer.
- track_selectively = 1,
- // always track this type
- track_always = 2
-};
-
-} // namespace serialization
-} // namespace boost
-
-#endif // BOOST_SERIALIZATION_TRACKING_ENUM_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/traits.hpp b/3rdParty/Boost/src/boost/serialization/traits.hpp
deleted file mode 100644
index da80009..0000000
--- a/3rdParty/Boost/src/boost/serialization/traits.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-#ifndef BOOST_SERIALIZATION_TRAITS_HPP
-#define BOOST_SERIALIZATION_TRAITS_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// traits.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-// This header is used to apply serialization traits to templates. The
-// standard system can't be used for platforms which don't support
-// Partial Templlate Specialization.
-
-// The motivation for this is the Name-Value Pair (NVP) template.
-// it has to work the same on all platforms in order for archives
-// to be portable accross platforms.
-
-#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
-
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/bool.hpp>
-#include <boost/serialization/level_enum.hpp>
-#include <boost/serialization/tracking_enum.hpp>
-
-namespace boost {
-namespace serialization {
-
-// common base class used to detect appended traits class
-struct basic_traits {};
-
-template <class T>
-struct extended_type_info_impl;
-
-template<
- class T,
- int Level,
- int Tracking,
- unsigned int Version = 0,
- class ETII = extended_type_info_impl< T >,
- class Wrapper = mpl::false_
->
-struct traits : public basic_traits {
- BOOST_STATIC_ASSERT(Version == 0 || Level >= object_class_info);
- BOOST_STATIC_ASSERT(Tracking == track_never || Level >= object_serializable);
- typedef BOOST_DEDUCED_TYPENAME mpl::int_<Level> level;
- typedef BOOST_DEDUCED_TYPENAME mpl::int_<Tracking> tracking;
- typedef BOOST_DEDUCED_TYPENAME mpl::int_<Version> version;
- typedef ETII type_info_implementation;
- typedef Wrapper is_wrapper;
-};
-
-} // namespace serialization
-} // namespace boost
-
-#endif // BOOST_SERIALIZATION_TRAITS_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/type_info_implementation.hpp b/3rdParty/Boost/src/boost/serialization/type_info_implementation.hpp
deleted file mode 100644
index 00eb152..0000000
--- a/3rdParty/Boost/src/boost/serialization/type_info_implementation.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-#ifndef BOOST_SERIALIZATION_TYPE_INFO_IMPLEMENTATION_HPP
-#define BOOST_SERIALIZATION_TYPE_INFO_IMPLEMENTATION_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// type_info_implementation.hpp: interface for portable version of type_info
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#include <boost/static_assert.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/type_traits/is_base_and_derived.hpp>
-#include <boost/serialization/traits.hpp>
-
-namespace boost {
-namespace serialization {
-
-// note that T and const T are folded into const T so that
-// there is only one table entry per type
-template<class T>
-struct type_info_implementation {
- template<class U>
- struct traits_class_typeinfo_implementation {
- typedef BOOST_DEDUCED_TYPENAME U::type_info_implementation::type type;
- };
- // note: at least one compiler complained w/o the full qualification
- // on basic traits below
- typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_base_and_derived<boost::serialization::basic_traits, T>,
- traits_class_typeinfo_implementation< T >,
- //else
- mpl::identity<
- BOOST_DEDUCED_TYPENAME extended_type_info_impl< T >::type
- >
- >::type type;
-};
-
-} // namespace serialization
-} // namespace boost
-
-// define a macro to assign a particular derivation of extended_type_info
-// to a specified a class.
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x560))
-#define BOOST_CLASS_TYPE_INFO(T, ETI) \
-namespace boost { \
-namespace serialization { \
-template<> \
-struct type_info_implementation< T > { \
- typedef const ETI type; \
-}; \
-} \
-} \
-/**/
-#else
-#define BOOST_CLASS_TYPE_INFO(T, ETI) \
-namespace boost { \
-namespace serialization { \
-template<> \
-struct type_info_implementation< T > { \
- typedef ETI type; \
-}; \
-template<> \
-struct type_info_implementation< const T > { \
- typedef ETI type; \
-}; \
-} \
-} \
-/**/
-#endif
-
-#endif /// BOOST_SERIALIZATION_TYPE_INFO_IMPLEMENTATION_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/version.hpp b/3rdParty/Boost/src/boost/serialization/version.hpp
deleted file mode 100644
index 72862fa..0000000
--- a/3rdParty/Boost/src/boost/serialization/version.hpp
+++ /dev/null
@@ -1,102 +0,0 @@
-#ifndef BOOST_SERIALIZATION_VERSION_HPP
-#define BOOST_SERIALIZATION_VERSION_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// version.hpp:
-
-// (C) Copyright 2002 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <boost/config.hpp>
-#include <boost/mpl/assert.hpp>
-#include <boost/mpl/int.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/mpl/integral_c_tag.hpp>
-
-#include <boost/type_traits/is_base_and_derived.hpp>
-
-namespace boost {
-namespace serialization {
-
-struct basic_traits;
-
-// default version number is 0. Override with higher version
-// when class definition changes.
-template<class T>
-struct version
-{
- template<class U>
- struct traits_class_version {
- typedef BOOST_DEDUCED_TYPENAME U::version type;
- };
-
- typedef mpl::integral_c_tag tag;
- // note: at least one compiler complained w/o the full qualification
- // on basic traits below
- typedef
- BOOST_DEDUCED_TYPENAME mpl::eval_if<
- is_base_and_derived<boost::serialization::basic_traits,T>,
- traits_class_version< T >,
- mpl::int_<0>
- >::type type;
- BOOST_STATIC_CONSTANT(int, value = version::type::value);
-};
-
-} // namespace serialization
-} // namespace boost
-
-/* note: at first it seemed that this would be a good place to trap
- * as an error an attempt to set a version # for a class which doesn't
- * save its class information (including version #) in the archive.
- * However, this imposes a requirement that the version be set after
- * the implemention level which would be pretty confusing. If this
- * is to be done, do this check in the input or output operators when
- * ALL the serialization traits are available. Included the implementation
- * here with this comment as a reminder not to do this!
- */
-//#include <boost/serialization/level.hpp>
-//#include <boost/mpl/equal_to.hpp>
-
-#include <boost/mpl/less.hpp>
-#include <boost/mpl/comparison.hpp>
-
-// specify the current version number for the class
-// version numbers limited to 8 bits !!!
-#define BOOST_CLASS_VERSION(T, N) \
-namespace boost { \
-namespace serialization { \
-template<> \
-struct version<T > \
-{ \
- typedef mpl::int_<N> type; \
- typedef mpl::integral_c_tag tag; \
- BOOST_STATIC_CONSTANT(int, value = version::type::value); \
- BOOST_MPL_ASSERT(( \
- boost::mpl::less< \
- boost::mpl::int_<N>, \
- boost::mpl::int_<256> \
- > \
- )); \
- /* \
- BOOST_MPL_ASSERT(( \
- mpl::equal_to< \
- :implementation_level<T >, \
- mpl::int_<object_class_info> \
- >::value \
- )); \
- */ \
-}; \
-} \
-}
-
-#endif // BOOST_SERIALIZATION_VERSION_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/void_cast_fwd.hpp b/3rdParty/Boost/src/boost/serialization/void_cast_fwd.hpp
deleted file mode 100644
index c94adb2..0000000
--- a/3rdParty/Boost/src/boost/serialization/void_cast_fwd.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#ifndef BOOST_SERIALIZATION_VOID_CAST_FWD_HPP
-#define BOOST_SERIALIZATION_VOID_CAST_FWD_HPP
-
-// MS compatible compilers support #pragma once
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// void_cast_fwd.hpp: interface for run-time casting of void pointers.
-
-// (C) Copyright 2005 Robert Ramey - http://www.rrsd.com .
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-// gennadiy.rozental@tfn.com
-
-// See http://www.boost.org for updates, documentation, and revision history.
-
-#include <cstddef> // NULL
-#include <boost/serialization/force_include.hpp>
-
-namespace boost {
-namespace serialization {
-namespace void_cast_detail{
-class void_caster;
-} // namespace void_cast_detail
-template<class Derived, class Base>
-BOOST_DLLEXPORT
-inline const void_cast_detail::void_caster & void_cast_register(
- const Derived * dnull = NULL,
- const Base * bnull = NULL
-) BOOST_USED;
-} // namespace serialization
-} // namespace boost
-
-#endif // BOOST_SERIALIZATION_VOID_CAST_HPP
diff --git a/3rdParty/Boost/src/boost/serialization/wrapper.hpp b/3rdParty/Boost/src/boost/serialization/wrapper.hpp
deleted file mode 100644
index eeb4333..0000000
--- a/3rdParty/Boost/src/boost/serialization/wrapper.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-#ifndef BOOST_SERIALIZATION_WRAPPER_HPP
-#define BOOST_SERIALIZATION_WRAPPER_HPP
-
-// (C) Copyright 2005-2006 Matthias Troyer
-// Use, modification and distribution is subject to the Boost Software
-// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-#include <boost/serialization/traits.hpp>
-#include <boost/type_traits/is_base_and_derived.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/bool.hpp>
-
-namespace boost { namespace serialization {
-
-/// the base class for serialization wrappers
-///
-/// wrappers need to be treated differently at various places in the serialization library,
-/// e.g. saving of non-const wrappers has to be possible. Since partial specialization
-// is not supported by all compilers, we derive all wrappers from wrapper_traits.
-
-template<
- class T,
- int Level = object_serializable,
- int Tracking = track_never,
- unsigned int Version = 0,
- class ETII = extended_type_info_impl< T >
->
-struct wrapper_traits :
- public traits<T,Level,Tracking,Version,ETII,mpl::true_>
-{};
-
-template<class T>
-struct is_wrapper_impl :
- boost::mpl::eval_if<
- boost::is_base_and_derived<basic_traits,T>,
- boost::mpl::true_,
- boost::mpl::false_
- >::type
-{};
-
-template<class T>
-struct is_wrapper {
- typedef BOOST_DEDUCED_TYPENAME is_wrapper_impl<const T>::type type;
-};
-
-} // serialization
-} // boost
-
-// A macro to define that a class is a wrapper
-#define BOOST_CLASS_IS_WRAPPER(T) \
-namespace boost { \
-namespace serialization { \
-template<> \
-struct is_wrapper_impl<const T> : boost::mpl::true_ {}; \
-} \
-} \
-/**/
-
-#endif //BOOST_SERIALIZATION_WRAPPER_HPP
diff --git a/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp b/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp
index 0528c61..763013f 100644
--- a/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp
+++ b/3rdParty/Boost/src/boost/signals/detail/named_slot_map.hpp
@@ -32,10 +32,10 @@ class stored_group
public:
enum storage_kind { sk_empty, sk_front, sk_back, sk_group };
- stored_group(storage_kind kind = sk_empty) : kind(kind), group() { }
+ stored_group(storage_kind p_kind = sk_empty) : kind(p_kind), group() { }
template<typename T>
- stored_group(const T& group) : kind(sk_group), group(new T(group)) { }
+ stored_group(const T& p_group) : kind(sk_group), group(new T(p_group)) { }
bool is_front() const { return kind == sk_front; }
bool is_back() const { return kind == sk_back; }
@@ -133,12 +133,12 @@ public:
#endif
private:
- named_slot_map_iterator(group_iterator group, group_iterator last) :
- group(group), last_group(last), slot_assigned(false)
+ named_slot_map_iterator(group_iterator giter, group_iterator last) :
+ group(giter), last_group(last), slot_assigned(false)
{ init_next_group(); }
- named_slot_map_iterator(group_iterator group, group_iterator last,
+ named_slot_map_iterator(group_iterator giter, group_iterator last,
slot_pair_iterator slot) :
- group(group), last_group(last), slot_(slot), slot_assigned(true)
+ group(giter), last_group(last), slot_(slot), slot_assigned(true)
{ }
void init_next_group()
diff --git a/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp b/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp
index c6706be..0d6afd9 100644
--- a/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp
+++ b/3rdParty/Boost/src/boost/signals/detail/slot_call_iterator.hpp
@@ -47,9 +47,9 @@ namespace boost {
friend class iterator_core_access;
public:
- slot_call_iterator(Iterator iter_in, Iterator end_in, Function f,
+ slot_call_iterator(Iterator iter_in, Iterator end_in, Function func,
optional<result_type> &c)
- : iter(iter_in), end(end_in), f(f), cache(&c)
+ : iter(iter_in), end(end_in), f(func), cache(&c)
{
iter = std::find_if(iter, end, is_callable());
}
diff --git a/3rdParty/Boost/src/boost/signals/signal_template.hpp b/3rdParty/Boost/src/boost/signals/signal_template.hpp
index a8420b6..6b0b91a 100644
--- a/3rdParty/Boost/src/boost/signals/signal_template.hpp
+++ b/3rdParty/Boost/src/boost/signals/signal_template.hpp
@@ -345,8 +345,8 @@ namespace boost {
#endif // BOOST_SIGNALS_NUM_ARGS > 0
call_bound_slot f(&args);
- typedef typename call_bound_slot::result_type result_type;
- optional<result_type> cache;
+ typedef typename call_bound_slot::result_type call_result_type;
+ optional<call_result_type> cache;
// Let the combiner call the slots via a pair of input iterators
return combiner()(slot_call_iterator(notification.impl->slots_.begin(),
impl->slots_.end(), f, cache),
@@ -386,8 +386,8 @@ namespace boost {
call_bound_slot f(&args);
- typedef typename call_bound_slot::result_type result_type;
- optional<result_type> cache;
+ typedef typename call_bound_slot::result_type call_result_type;
+ optional<call_result_type> cache;
// Let the combiner call the slots via a pair of input iterators
return combiner()(slot_call_iterator(notification.impl->slots_.begin(),
diff --git a/3rdParty/Boost/src/boost/static_assert.hpp b/3rdParty/Boost/src/boost/static_assert.hpp
index 5bded5e..9fe9bc0 100644
--- a/3rdParty/Boost/src/boost/static_assert.hpp
+++ b/3rdParty/Boost/src/boost/static_assert.hpp
@@ -17,6 +17,12 @@
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
+#ifndef BOOST_NO_STATIC_ASSERT
+# define BOOST_STATIC_ASSERT_MSG( B, Msg ) static_assert(B, Msg)
+#else
+# define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
+#endif
+
#ifdef __BORLANDC__
//
// workaround for buggy integral-constant expression support:
@@ -38,7 +44,7 @@
# define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
#endif
-#ifdef BOOST_HAS_STATIC_ASSERT
+#ifndef BOOST_NO_STATIC_ASSERT
# define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
#else
@@ -125,7 +131,7 @@ template<int x> struct static_assert_test{};
enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
= sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
#endif
-#endif // ndef BOOST_HAS_STATIC_ASSERT
+#endif // defined(BOOST_NO_STATIC_ASSERT)
#endif // BOOST_STATIC_ASSERT_HPP
diff --git a/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp b/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp
index b70623a..c210a91 100644
--- a/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp
+++ b/3rdParty/Boost/src/boost/thread/win32/thread_heap_alloc.hpp
@@ -56,7 +56,7 @@ namespace boost
{
namespace detail
{
- inline BOOST_THREAD_DECL void* allocate_raw_heap_memory(unsigned size)
+ inline /*BOOST_THREAD_DECL*/ void* allocate_raw_heap_memory(unsigned size)
{
void* const heap_memory=detail::win32::HeapAlloc(detail::win32::GetProcessHeap(),0,size);
if(!heap_memory)
@@ -66,7 +66,7 @@ namespace boost
return heap_memory;
}
- inline BOOST_THREAD_DECL void free_raw_heap_memory(void* heap_memory)
+ inline /*BOOST_THREAD_DECL*/ void free_raw_heap_memory(void* heap_memory)
{
BOOST_VERIFY(detail::win32::HeapFree(detail::win32::GetProcessHeap(),0,heap_memory)!=0);
}
diff --git a/3rdParty/Boost/src/boost/throw_exception.hpp b/3rdParty/Boost/src/boost/throw_exception.hpp
index a384054..a73acb6 100644
--- a/3rdParty/Boost/src/boost/throw_exception.hpp
+++ b/3rdParty/Boost/src/boost/throw_exception.hpp
@@ -79,7 +79,7 @@ template<class E> BOOST_ATTRIBUTE_NORETURN inline void throw_exception( E const
set_info(
set_info(
set_info(
- enable_error_info(x),
+ boost::enable_error_info(x),
throw_function(current_function)),
throw_file(file)),
throw_line(line)));
diff --git a/3rdParty/Boost/src/boost/token_functions.hpp b/3rdParty/Boost/src/boost/token_functions.hpp
index 4e2d745..50f8330 100644
--- a/3rdParty/Boost/src/boost/token_functions.hpp
+++ b/3rdParty/Boost/src/boost/token_functions.hpp
@@ -218,9 +218,9 @@ namespace boost{
{
#if !defined(BOOST_NO_CWCTYPE)
if (sizeof(char_type) == 1)
- return std::isspace(c) != 0;
+ return std::isspace(static_cast<int>(c)) != 0;
else
- return std::iswspace(c) != 0;
+ return std::iswspace(static_cast<std::wint_t>(c)) != 0;
#else
return static_cast< unsigned >(c) <= 255 && std::isspace(c) != 0;
#endif
@@ -230,9 +230,9 @@ namespace boost{
{
#if !defined(BOOST_NO_CWCTYPE)
if (sizeof(char_type) == 1)
- return std::ispunct(c) != 0;
+ return std::ispunct(static_cast<int>(c)) != 0;
else
- return std::iswpunct(c) != 0;
+ return std::iswpunct(static_cast<std::wint_t>(c)) != 0;
#else
return static_cast< unsigned >(c) <= 255 && std::ispunct(c) != 0;
#endif
diff --git a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp
index 348fd80..88f0d90 100644
--- a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp
+++ b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic.hpp
@@ -37,6 +37,7 @@
#include "boost/type_traits/cv_traits.hpp"
#include "boost/type_traits/function_traits.hpp"
+#include "boost/utility/swap.hpp"
#include "boost/detail/workaround.hpp" // needed for BOOST_WORKAROUND
@@ -86,45 +87,28 @@ namespace detail {
template<class T>
class generate_error;
-// - cons getters --------------------------------------------------------
-// called: get_class<N>::get<RETURN_TYPE>(aTuple)
-
-template< int N >
-struct get_class {
- template<class RET, class HT, class TT >
- inline static RET get(const cons<HT, TT>& t)
- {
-#if BOOST_WORKAROUND(__IBMCPP__,==600)
- // vacpp 6.0 is not very consistent regarding the member template keyword
- // Here it generates an error when the template keyword is used.
- return get_class<N-1>::get<RET>(t.tail);
-#else
- return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
-#endif
- }
- template<class RET, class HT, class TT >
- inline static RET get(cons<HT, TT>& t)
- {
-#if BOOST_WORKAROUND(__IBMCPP__,==600)
- return get_class<N-1>::get<RET>(t.tail);
-#else
- return get_class<N-1>::BOOST_NESTED_TEMPLATE get<RET>(t.tail);
-#endif
- }
+template<int N>
+struct drop_front {
+ template<class Tuple>
+ struct apply {
+ typedef BOOST_DEDUCED_TYPENAME drop_front<N-1>::BOOST_NESTED_TEMPLATE
+ apply<Tuple> next;
+ typedef BOOST_DEDUCED_TYPENAME next::type::tail_type type;
+ static const type& call(const Tuple& tup) {
+ return next::call(tup).tail;
+ }
+ };
};
template<>
-struct get_class<0> {
- template<class RET, class HT, class TT>
- inline static RET get(const cons<HT, TT>& t)
- {
- return t.head;
- }
- template<class RET, class HT, class TT>
- inline static RET get(cons<HT, TT>& t)
- {
- return t.head;
- }
+struct drop_front<0> {
+ template<class Tuple>
+ struct apply {
+ typedef Tuple type;
+ static const type& call(const Tuple& tup) {
+ return tup;
+ }
+ };
};
} // end of namespace detail
@@ -140,41 +124,23 @@ struct get_class<0> {
template<int N, class T>
struct element
{
-private:
- typedef typename T::tail_type Next;
-public:
- typedef typename element<N-1, Next>::type type;
-};
-template<class T>
-struct element<0,T>
-{
- typedef typename T::head_type type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type type;
};
template<int N, class T>
struct element<N, const T>
{
private:
- typedef typename T::tail_type Next;
- typedef typename element<N-1, Next>::type unqualified_type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type unqualified_type;
public:
#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
typedef const unqualified_type type;
#else
- typedef typename boost::add_const<unqualified_type>::type type;
-#endif
-
-};
-template<class T>
-struct element<0,const T>
-{
-#if BOOST_WORKAROUND(__BORLANDC__,<0x600)
- typedef const typename T::head_type type;
-#else
- typedef typename boost::add_const<typename T::head_type>::type type;
+ typedef BOOST_DEDUCED_TYPENAME boost::add_const<unqualified_type>::type type;
#endif
};
-
#else // def BOOST_NO_CV_SPECIALIZATIONS
namespace detail {
@@ -182,31 +148,16 @@ namespace detail {
template<int N, class T, bool IsConst>
struct element_impl
{
-private:
- typedef typename T::tail_type Next;
-public:
- typedef typename element_impl<N-1, Next, IsConst>::type type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type type;
};
template<int N, class T>
struct element_impl<N, T, true /* IsConst */>
{
-private:
- typedef typename T::tail_type Next;
-public:
- typedef const typename element_impl<N-1, Next, true>::type type;
-};
-
-template<class T>
-struct element_impl<0, T, false /* IsConst */>
-{
- typedef typename T::head_type type;
-};
-
-template<class T>
-struct element_impl<0, T, true /* IsConst */>
-{
- typedef const typename T::head_type type;
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<T>::type::head_type unqualified_type;
+ typedef const unqualified_type type;
};
} // end of namespace detail
@@ -258,17 +209,10 @@ inline typename access_traits<
typename element<N, cons<HT, TT> >::type
>::non_const_type
get(cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
-#if BOOST_WORKAROUND(__IBMCPP__,==600 )
- return detail::get_class<N>::
-#else
- return detail::get_class<N>::BOOST_NESTED_TEMPLATE
-#endif
- get<
- typename access_traits<
- typename element<N, cons<HT, TT> >::type
- >::non_const_type,
- HT,TT
- >(c);
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<cons<HT, TT> > impl;
+ typedef BOOST_DEDUCED_TYPENAME impl::type cons_element;
+ return const_cast<cons_element&>(impl::call(c)).head;
}
// get function for const cons-lists, returns a const reference to
@@ -279,17 +223,10 @@ inline typename access_traits<
typename element<N, cons<HT, TT> >::type
>::const_type
get(const cons<HT, TT>& c BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(int, N)) {
-#if BOOST_WORKAROUND(__IBMCPP__,==600)
- return detail::get_class<N>::
-#else
- return detail::get_class<N>::BOOST_NESTED_TEMPLATE
-#endif
- get<
- typename access_traits<
- typename element<N, cons<HT, TT> >::type
- >::const_type,
- HT,TT
- >(c);
+ typedef BOOST_DEDUCED_TYPENAME detail::drop_front<N>::BOOST_NESTED_TEMPLATE
+ apply<cons<HT, TT> > impl;
+ typedef BOOST_DEDUCED_TYPENAME impl::type cons_element;
+ return impl::call(c).head;
}
// -- the cons template --------------------------------------------------
@@ -663,18 +600,21 @@ public:
// Swallows any assignment (by Doug Gregor)
namespace detail {
+struct swallow_assign;
+typedef void (detail::swallow_assign::*ignore_t)();
struct swallow_assign {
-
+ swallow_assign(ignore_t(*)(ignore_t)) {}
template<typename T>
swallow_assign const& operator=(const T&) const {
return *this;
}
};
+
} // namespace detail
// "ignore" allows tuple positions to be ignored when using "tie".
-detail::swallow_assign const ignore = detail::swallow_assign();
+inline detail::ignore_t ignore(detail::ignore_t) { return 0; }
// ---------------------------------------------------------------------------
// The call_traits for make_tuple
@@ -756,6 +696,10 @@ struct make_tuple_traits<const reference_wrapper<T> >{
typedef T& type;
};
+template<>
+struct make_tuple_traits<detail::ignore_t(detail::ignore_t)> {
+ typedef detail::swallow_assign type;
+};
@@ -877,71 +821,154 @@ make_tuple(const T0& t0, const T1& t1, const T2& t2, const T3& t3,
return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
}
+namespace detail {
+template<class T>
+struct tie_traits {
+ typedef T& type;
+};
+
+template<>
+struct tie_traits<ignore_t(ignore_t)> {
+ typedef swallow_assign type;
+};
+
+template<>
+struct tie_traits<void> {
+ typedef null_type type;
+};
+
+template <
+ class T0 = void, class T1 = void, class T2 = void,
+ class T3 = void, class T4 = void, class T5 = void,
+ class T6 = void, class T7 = void, class T8 = void,
+ class T9 = void
+>
+struct tie_mapper {
+ typedef
+ tuple<typename tie_traits<T0>::type,
+ typename tie_traits<T1>::type,
+ typename tie_traits<T2>::type,
+ typename tie_traits<T3>::type,
+ typename tie_traits<T4>::type,
+ typename tie_traits<T5>::type,
+ typename tie_traits<T6>::type,
+ typename tie_traits<T7>::type,
+ typename tie_traits<T8>::type,
+ typename tie_traits<T9>::type> type;
+};
+
+}
// Tie function templates -------------------------------------------------
-template<class T1>
-inline tuple<T1&> tie(T1& t1) {
- return tuple<T1&> (t1);
+template<class T0>
+inline typename detail::tie_mapper<T0>::type
+tie(T0& t0) {
+ typedef typename detail::tie_mapper<T0>::type t;
+ return t(t0);
}
-template<class T1, class T2>
-inline tuple<T1&, T2&> tie(T1& t1, T2& t2) {
- return tuple<T1&, T2&> (t1, t2);
+template<class T0, class T1>
+inline typename detail::tie_mapper<T0, T1>::type
+tie(T0& t0, T1& t1) {
+ typedef typename detail::tie_mapper<T0, T1>::type t;
+ return t(t0, t1);
}
-template<class T1, class T2, class T3>
-inline tuple<T1&, T2&, T3&> tie(T1& t1, T2& t2, T3& t3) {
- return tuple<T1&, T2&, T3&> (t1, t2, t3);
+template<class T0, class T1, class T2>
+inline typename detail::tie_mapper<T0, T1, T2>::type
+tie(T0& t0, T1& t1, T2& t2) {
+ typedef typename detail::tie_mapper<T0, T1, T2>::type t;
+ return t(t0, t1, t2);
}
-template<class T1, class T2, class T3, class T4>
-inline tuple<T1&, T2&, T3&, T4&> tie(T1& t1, T2& t2, T3& t3, T4& t4) {
- return tuple<T1&, T2&, T3&, T4&> (t1, t2, t3, t4);
+template<class T0, class T1, class T2, class T3>
+inline typename detail::tie_mapper<T0, T1, T2, T3>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3) {
+ typedef typename detail::tie_mapper<T0, T1, T2, T3>::type t;
+ return t(t0, t1, t2, t3);
}
-template<class T1, class T2, class T3, class T4, class T5>
-inline tuple<T1&, T2&, T3&, T4&, T5&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5) {
- return tuple<T1&, T2&, T3&, T4&, T5&> (t1, t2, t3, t4, t5);
+template<class T0, class T1, class T2, class T3, class T4>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4) {
+ typedef typename detail::tie_mapper<T0, T1, T2, T3, T4>::type t;
+ return t(t0, t1, t2, t3, t4);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&> (t1, t2, t3, t4, t5, t6);
+template<class T0, class T1, class T2, class T3, class T4, class T5>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5) {
+ typedef typename detail::tie_mapper<T0, T1, T2, T3, T4, T5>::type t;
+ return t(t0, t1, t2, t3, t4, t5);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&> (t1, t2, t3, t4, t5, t6, t7);
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6);
+}
+
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
+ class T7>
+inline typename detail::tie_mapper<T0, T1, T2, T3, T4, T5, T6, T7>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6, T7& t7) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6, t7);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
- class T8>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&>
- (t1, t2, t3, t4, t5, t6, t7, t8);
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
+ class T7, class T8>
+inline typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6, T7& t7,
+ T8& t8) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6, t7, t8);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
- class T8, class T9>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8,
- T9& t9) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&>
- (t1, t2, t3, t4, t5, t6, t7, t8, t9);
+template<class T0, class T1, class T2, class T3, class T4, class T5, class T6,
+ class T7, class T8, class T9>
+inline typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type
+tie(T0& t0, T1& t1, T2& t2, T3& t3,
+ T4& t4, T5& t5, T6& t6, T7& t7,
+ T8& t8, T9& t9) {
+ typedef typename detail::tie_mapper
+ <T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>::type t;
+ return t(t0, t1, t2, t3, t4, t5, t6, t7, t8, t9);
}
-template<class T1, class T2, class T3, class T4, class T5, class T6, class T7,
- class T8, class T9, class T10>
-inline tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&>
-tie(T1& t1, T2& t2, T3& t3, T4& t4, T5& t5, T6& t6, T7& t7, T8& t8,
- T9& t9, T10& t10) {
- return tuple<T1&, T2&, T3&, T4&, T5&, T6&, T7&, T8&, T9&, T10&>
- (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs);
+inline void swap(null_type&, null_type&) {}
+template<class HH>
+inline void swap(cons<HH, null_type>& lhs, cons<HH, null_type>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+}
+template<class HH, class TT>
+inline void swap(cons<HH, TT>& lhs, cons<HH, TT>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+ ::boost::tuples::swap(lhs.tail, rhs.tail);
+}
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+inline void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs) {
+ typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> tuple_type;
+ typedef typename tuple_type::inherited base;
+ ::boost::tuples::swap(static_cast<base&>(lhs), static_cast<base&>(rhs));
}
} // end of namespace tuples
diff --git a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp
index bb38662..7379bf8 100644
--- a/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp
+++ b/3rdParty/Boost/src/boost/tuple/detail/tuple_basic_no_partial_spec.hpp
@@ -27,6 +27,7 @@
#define BOOST_TUPLE_BASIC_NO_PARTIAL_SPEC_HPP
#include "boost/type_traits.hpp"
+#include "boost/utility/swap.hpp"
#include <utility>
#if defined BOOST_MSVC
@@ -836,6 +837,29 @@ namespace tuples {
detail::swallow_assign const ignore = detail::swallow_assign();
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs);
+inline void swap(null_type&, null_type&) {}
+template<class HH>
+inline void swap(cons<HH, null_type>& lhs, cons<HH, null_type>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+}
+template<class HH, class TT>
+inline void swap(cons<HH, TT>& lhs, cons<HH, TT>& rhs) {
+ ::boost::swap(lhs.head, rhs.head);
+ ::boost::tuples::swap(lhs.tail, rhs.tail);
+}
+template <class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9>
+inline void swap(tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& lhs,
+ tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>& rhs) {
+ typedef tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> tuple_type;
+ typedef typename tuple_type::inherited base;
+ ::boost::tuples::swap(static_cast<base&>(lhs), static_cast<base&>(rhs));
+}
+
} // namespace tuples
} // namespace boost
#endif // BOOST_TUPLE_BASIC_NO_PARTIAL_SPEC_HPP
diff --git a/3rdParty/Boost/src/boost/type_traits/common_type.hpp b/3rdParty/Boost/src/boost/type_traits/common_type.hpp
index 58525fd..74b0363 100644
--- a/3rdParty/Boost/src/boost/type_traits/common_type.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/common_type.hpp
@@ -120,6 +120,11 @@ namespace type_traits_detail {
public:
typedef BOOST_TYPEOF_TPL(declval_b() ? declval_T() : declval_U()) type;
#endif
+
+#if defined(__GNUC__) && __GNUC__ == 3 && (__GNUC_MINOR__ == 2 || __GNUC_MINOR__ == 3)
+ public:
+ void public_dummy_function_just_to_silence_warning();
+#endif
};
template <class T>
diff --git a/3rdParty/Boost/src/boost/type_traits/function_traits.hpp b/3rdParty/Boost/src/boost/type_traits/function_traits.hpp
index 6d708cd..d715345 100644
--- a/3rdParty/Boost/src/boost/type_traits/function_traits.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/function_traits.hpp
@@ -166,7 +166,7 @@ struct function_traits_helper<R (*)(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>
template<typename Function>
struct function_traits :
- public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
+ public boost::detail::function_traits_helper<typename boost::add_pointer<Function>::type>
{
};
diff --git a/3rdParty/Boost/src/boost/type_traits/is_const.hpp b/3rdParty/Boost/src/boost/type_traits/is_const.hpp
index 812ed15..99b0f36 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_const.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_const.hpp
@@ -59,16 +59,16 @@ template <class T>
struct is_const_rvalue_filter
{
#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_const);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_const);
#else
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_const);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_const);
#endif
};
#ifndef BOOST_NO_RVALUE_REFERENCES
template <class T>
struct is_const_rvalue_filter<T&&>
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ BOOST_STATIC_CONSTANT(bool, value = false);
};
#endif
}
diff --git a/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp b/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp
index 98ab159..8dcd988 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_virtual_base_of.hpp
@@ -22,7 +22,7 @@ namespace detail {
#ifdef BOOST_MSVC
#pragma warning( push )
-#pragma warning( disable : 4584 )
+#pragma warning( disable : 4584 4250)
#elif defined __GNUC__
#pragma GCC system_header
#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp b/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp
index e531263..43c3a8b 100644
--- a/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/is_volatile.hpp
@@ -46,9 +46,9 @@ template <class T>
struct is_volatile_rval_filter
{
#if BOOST_WORKAROUND(BOOST_MSVC, < 1400)
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_volatile);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<typename boost::remove_bounds<T>::type*>::is_volatile);
#else
- BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_volatile);
+ BOOST_STATIC_CONSTANT(bool, value = ::boost::detail::cv_traits_imp<T*>::is_volatile);
#endif
};
#ifndef BOOST_NO_RVALUE_REFERENCES
@@ -59,7 +59,7 @@ struct is_volatile_rval_filter
template <class T>
struct is_volatile_rval_filter<T&&>
{
- BOOST_STATIC_CONSTANT(bool, value = false);
+ BOOST_STATIC_CONSTANT(bool, value = false);
};
#endif
}
diff --git a/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp b/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp
index 668e755..4061fd2 100644
--- a/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/remove_cv.hpp
@@ -32,7 +32,7 @@ namespace detail{
template <class T>
struct rvalue_ref_filter_rem_cv
{
- typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
+ typedef typename boost::detail::cv_traits_imp<T*>::unqualified_type type;
};
#ifndef BOOST_NO_RVALUE_REFERENCES
@@ -43,7 +43,7 @@ struct rvalue_ref_filter_rem_cv
template <class T>
struct rvalue_ref_filter_rem_cv<T&&>
{
- typedef T&& type;
+ typedef T&& type;
};
#endif
diff --git a/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp b/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp
index a87db33..f453086 100644
--- a/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp
+++ b/3rdParty/Boost/src/boost/type_traits/remove_reference.hpp
@@ -32,13 +32,13 @@ namespace detail{
template <class T>
struct remove_rvalue_ref
{
- typedef T type;
+ typedef T type;
};
#ifndef BOOST_NO_RVALUE_REFERENCES
template <class T>
struct remove_rvalue_ref<T&&>
{
- typedef T type;
+ typedef T type;
};
#endif
diff --git a/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp b/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp
index 2f58c18..74ebc70 100644
--- a/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp
+++ b/3rdParty/Boost/src/boost/typeof/msvc/typeof_impl.hpp
@@ -153,7 +153,9 @@ namespace boost
};
};
# endif
-# if BOOST_WORKAROUND(BOOST_MSVC,==1310)
+// EAN: preprocess this block out on advice of Peder Holt
+// to eliminate errors in type_traits/common_type.hpp
+# if 0 //BOOST_WORKAROUND(BOOST_MSVC,==1310)
template<const std::type_info& ref_type_info>
struct msvc_typeid_wrapper {
typedef typename msvc_extract_type<msvc_typeid_wrapper>::id2type id2type;
diff --git a/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp b/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp
index b1dee5c..913dbcd 100644
--- a/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp
+++ b/3rdParty/Boost/src/boost/unordered/detail/buckets.hpp
@@ -64,7 +64,7 @@ namespace boost { namespace unordered_detail {
inline void hash_buckets<A, G>::delete_node(node_ptr b)
{
node* raw_ptr = static_cast<node*>(&*b);
- boost::unordered_detail::destroy(&raw_ptr->value());
+ boost::unordered_detail::destroy(raw_ptr->value_ptr());
real_node_ptr n(node_alloc().address(*raw_ptr));
node_alloc().destroy(n);
node_alloc().deallocate(n, 1);
diff --git a/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp b/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp
index be4d5e1..471d1d2 100644
--- a/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp
+++ b/3rdParty/Boost/src/boost/unordered/detail/fwd.hpp
@@ -21,14 +21,14 @@
// This header defines most of the classes used to implement the unordered
// containers. It doesn't include the insert methods as they require a lot
-// of preprocessor metaprogramming - they are in insert.hpp
+// of preprocessor metaprogramming - they are in unique.hpp and equivalent.hpp.
// Template parameters:
//
// H = Hash Function
// P = Predicate
// A = Value Allocator
-// G = Grouped/Ungrouped
+// G = Bucket group policy, 'grouped' or 'ungrouped'
// E = Key Extractor
#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_NO_VARIADIC_TEMPLATES)
@@ -90,7 +90,37 @@ namespace boost { namespace unordered_detail {
#pragma warning(pop)
#endif
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // This section implements buckets and nodes. Here's a rough
+ // inheritance diagram, to show how they pull together.
+ //
+ // For unordered_set/unordered_map:
+ //
+ // hash_bucket<A>
+ // |
+ // ungrouped_node_base<A> value_base<A::value_type>
+ // | |
+ // +--------------+-------------+
+ // |
+ // hash_node<A, ungrouped>
+ //
+ // For unordered_multiset/unordered_multimap:
+ //
+ // hash_bucket<A>
+ // |
+ // grouped_node_base<A> value_base<A::value_type>
+ // | |
+ // +--------------+-------------+
+ // |
+ // hash_node<A, grouped>
+
// hash_bucket
+ //
+ // hash_bucket is used for both the buckets and as a base class for
+ // nodes. By using 'bucket_ptr' for 'node_ptr', 'next_' can point
+ // to either a bucket or a node. This is used later to implement a
+ // sentinel at the end of the bucket array.
template <class A>
class hash_bucket
@@ -109,6 +139,16 @@ namespace boost { namespace unordered_detail {
hash_bucket() : next_() {}
};
+ // In containers with equivalent keys (unordered_multimap and
+ // unordered_multiset) equivalent nodes are grouped together, in
+ // containers with unique keys (unordered_map and unordered_set)
+ // individual nodes are treated as groups of one. The following two
+ // classes implement the data structure.
+
+ // This is used for containers with unique keys. There are no groups
+ // so it doesn't add any extra members, and just treats individual
+ // nodes as groups of one.
+
template <class A>
struct ungrouped_node_base : hash_bucket<A> {
typedef hash_bucket<A> bucket;
@@ -125,6 +165,10 @@ namespace boost { namespace unordered_detail {
static void unlink_nodes(bucket& b, node_ptr end);
};
+ // This is used for containers with equivalent keys. It implements a
+ // circular list running in the opposite direction to the linked
+ // list through the nodes.
+
template <class A>
struct grouped_node_base : hash_bucket<A>
{
@@ -151,6 +195,10 @@ namespace boost { namespace unordered_detail {
}
};
+ // These two classes implement an easy way to pass around the node
+ // group policy classes without the messy template parameters.
+ // Whenever you see the template parameter 'G' it's one of these.
+
struct ungrouped
{
template <class A>
@@ -167,6 +215,8 @@ namespace boost { namespace unordered_detail {
};
};
+ // The space used to store values in a node.
+
template <class ValueType>
struct value_base
{
@@ -181,6 +231,9 @@ namespace boost { namespace unordered_detail {
value_type& value() {
return *(ValueType*) this;
}
+ value_type* value_ptr() {
+ return (ValueType*) this;
+ }
private:
value_base& operator=(value_base const&);
};
@@ -199,11 +252,20 @@ namespace boost { namespace unordered_detail {
static value_type& get_value(node_ptr p) {
return static_cast<hash_node&>(*p).value();
}
+ static value_type* get_value_ptr(node_ptr p) {
+ return static_cast<hash_node&>(*p).value_ptr();
+ }
private:
hash_node& operator=(hash_node const&);
};
+ ////////////////////////////////////////////////////////////////////////////
+ //
// Iterator Base
+ //
+ // This is the iterator used internally, the external iterators are
+ // provided by lightweight wrappers (hash_iterator and
+ // hast_const_iterator) which provide the full iterator interface.
template <class A, class G>
class hash_iterator_base
@@ -248,12 +310,24 @@ namespace boost { namespace unordered_detail {
}
};
+ ////////////////////////////////////////////////////////////////////////////
+ //
+ // Now the main data structure:
+ //
+ // hash_buckets<A, G> hash_buffered_functions<H, P>
+ // | |
+ // +-------------+--------------+
+ // |
+ // hash_table<T>
+ //
+ // T is a class which contains typedefs for all the types we need.
+
// hash_buckets
//
// This is responsible for allocating and deallocating buckets and nodes.
//
// Notes:
- // 1. For the sake exception safety the allocators themselves don't allocate
+ // 1. For the sake exception safety the consturctors don't allocate
// anything.
// 2. It's the callers responsibility to allocate the buckets before calling
// any of the methods (other than getters and setters).
@@ -327,6 +401,17 @@ namespace boost { namespace unordered_detail {
std::size_t delete_to_bucket_end(node_ptr begin);
};
+ // Assigning and swapping the equality and hash function objects
+ // needs strong exception safety. To implement that normally we'd
+ // require one of them to be known to not throw and the other to
+ // guarantee strong exception safety. Unfortunately they both only
+ // have basic exception safety. So to acheive strong exception
+ // safety we have storage space for two copies, and assign the new
+ // copies to the unused space. Then switch to using that to use
+ // them. This is implemented in 'set_hash_functions' which
+ // atomically assigns the new function objects in a strongly
+ // exception safe manner.
+
template <class H, class P> class set_hash_functions;
template <class H, class P>
@@ -429,6 +514,12 @@ namespace boost { namespace unordered_detail {
}
};
+ // This implements almost all of the required functionality, apart
+ // from some things that are specific to containers with unique and
+ // equivalent keys which is implemented in hash_unique_table and
+ // hash_equivalent_table. See unique.hpp and equivalent.hpp for
+ // their declaration and implementation.
+
template <class T>
class hash_table : public T::buckets, public T::buffered_functions
{
@@ -569,9 +660,13 @@ namespace boost { namespace unordered_detail {
node_constructor&, std::size_t);
};
- // Iterator Access
+ ///////////////////////////////////////////////////////////////////
+ //
+ // Iterators
+
+ // iterator_access is used to access the internal iterator without
+ // making it publicly available.
-#if !defined(__clang__)
class iterator_access
{
public:
@@ -582,30 +677,6 @@ namespace boost { namespace unordered_detail {
return it.base_;
}
};
-#else
- class iterator_access
- {
- public:
- // Note: we access Iterator::base here, rather than in the function
- // signature to work around a bug in the friend support of an
- // early version of clang.
-
- template <class Iterator>
- struct base
- {
- typedef BOOST_DEDUCED_TYPENAME Iterator::base type;
- };
-
- template <class Iterator>
- static BOOST_DEDUCED_TYPENAME base<Iterator>::type const&
- get(Iterator const& it)
- {
- return it.base_;
- }
- };
-#endif
-
- // Iterators
template <class A, class G> class hash_iterator;
template <class A, class G> class hash_const_iterator;
@@ -644,7 +715,7 @@ namespace boost { namespace unordered_detail {
return node::get_value(ptr_);
}
value_type* operator->() const {
- return &node::get_value(ptr_);
+ return node::get_value_ptr(ptr_);
}
hash_local_iterator& operator++() {
ptr_ = ptr_->next_; return *this;
@@ -694,7 +765,7 @@ namespace boost { namespace unordered_detail {
return node::get_value(ptr_);
}
value_type const* operator->() const {
- return &node::get_value(ptr_);
+ return node::get_value_ptr(ptr_);
}
hash_const_local_iterator& operator++() {
ptr_ = ptr_->next_; return *this;
@@ -716,7 +787,7 @@ namespace boost { namespace unordered_detail {
}
};
- // iterators
+ // Iterators
//
// all no throw
@@ -823,7 +894,12 @@ namespace boost { namespace unordered_detail {
}
};
+ ////////////////////////////////////////////////////////////////////////////
+ //
// types
+ //
+ // This is used to convieniently pass around a container's typedefs
+ // without having 7 template parameters.
template <class K, class V, class H, class P, class A, class E, class G>
struct types
diff --git a/3rdParty/Boost/src/boost/unordered/detail/util.hpp b/3rdParty/Boost/src/boost/unordered/detail/util.hpp
index 5540965..989883e 100644
--- a/3rdParty/Boost/src/boost/unordered/detail/util.hpp
+++ b/3rdParty/Boost/src/boost/unordered/detail/util.hpp
@@ -299,7 +299,7 @@ namespace boost { namespace unordered_detail {
#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x0613))
struct dummy { hash_node<Alloc, Grouped> x; };
#endif
- boost::unordered_detail::destroy(&node_->value());
+ boost::unordered_detail::destroy(node_->value_ptr());
}
if (node_constructed_)
@@ -322,7 +322,7 @@ namespace boost { namespace unordered_detail {
}
else {
BOOST_ASSERT(node_constructed_ && value_constructed_);
- boost::unordered_detail::destroy(&node_->value());
+ boost::unordered_detail::destroy(node_->value_ptr());
value_constructed_ = false;
}
}
diff --git a/3rdParty/Boost/src/boost/unordered/unordered_map.hpp b/3rdParty/Boost/src/boost/unordered/unordered_map.hpp
index 5bad0eb..86a6fc6 100644
--- a/3rdParty/Boost/src/boost/unordered/unordered_map.hpp
+++ b/3rdParty/Boost/src/boost/unordered/unordered_map.hpp
@@ -160,6 +160,11 @@ namespace boost
~unordered_map() {}
#if !defined(BOOST_NO_RVALUE_REFERENCES)
+ unordered_map(unordered_map const& other)
+ : table_(other.table_)
+ {
+ }
+
unordered_map(unordered_map&& other)
: table_(other.table_, boost::unordered_detail::move_tag())
{
@@ -170,6 +175,12 @@ namespace boost
{
}
+ unordered_map& operator=(unordered_map const& x)
+ {
+ table_ = x.table_;
+ return *this;
+ }
+
unordered_map& operator=(unordered_map&& x)
{
table_.move(x.table_);
@@ -705,6 +716,11 @@ namespace boost
~unordered_multimap() {}
#if !defined(BOOST_NO_RVALUE_REFERENCES)
+ unordered_multimap(unordered_multimap const& other)
+ : table_(other.table_)
+ {
+ }
+
unordered_multimap(unordered_multimap&& other)
: table_(other.table_, boost::unordered_detail::move_tag())
{
@@ -715,6 +731,12 @@ namespace boost
{
}
+ unordered_multimap& operator=(unordered_multimap const& x)
+ {
+ table_ = x.table_;
+ return *this;
+ }
+
unordered_multimap& operator=(unordered_multimap&& x)
{
table_.move(x.table_);
diff --git a/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp b/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp
index 5e9bb07..edecc5d 100644
--- a/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp
+++ b/3rdParty/Boost/src/boost/unordered/unordered_map_fwd.hpp
@@ -24,13 +24,13 @@ namespace boost
class A = std::allocator<std::pair<const K, T> > >
class unordered_map;
template <class K, class T, class H, class P, class A>
- bool operator==(unordered_map<K, T, H, P, A> const&,
+ inline bool operator==(unordered_map<K, T, H, P, A> const&,
unordered_map<K, T, H, P, A> const&);
template <class K, class T, class H, class P, class A>
- bool operator!=(unordered_map<K, T, H, P, A> const&,
+ inline bool operator!=(unordered_map<K, T, H, P, A> const&,
unordered_map<K, T, H, P, A> const&);
template <class K, class T, class H, class P, class A>
- void swap(unordered_map<K, T, H, P, A>&,
+ inline void swap(unordered_map<K, T, H, P, A>&,
unordered_map<K, T, H, P, A>&);
template <class K,
@@ -40,13 +40,13 @@ namespace boost
class A = std::allocator<std::pair<const K, T> > >
class unordered_multimap;
template <class K, class T, class H, class P, class A>
- bool operator==(unordered_multimap<K, T, H, P, A> const&,
+ inline bool operator==(unordered_multimap<K, T, H, P, A> const&,
unordered_multimap<K, T, H, P, A> const&);
template <class K, class T, class H, class P, class A>
- bool operator!=(unordered_multimap<K, T, H, P, A> const&,
+ inline bool operator!=(unordered_multimap<K, T, H, P, A> const&,
unordered_multimap<K, T, H, P, A> const&);
template <class K, class T, class H, class P, class A>
- void swap(unordered_multimap<K, T, H, P, A>&,
+ inline void swap(unordered_multimap<K, T, H, P, A>&,
unordered_multimap<K, T, H, P, A>&);
}
diff --git a/3rdParty/Boost/src/boost/utility/detail/in_place_factory_prefix.hpp b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_prefix.hpp
new file mode 100644
index 0000000..afd76b5
--- /dev/null
+++ b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_prefix.hpp
@@ -0,0 +1,36 @@
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2007, Tobias Schwinger.
+//
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP
+#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP
+
+#include <new>
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/punctuation/paren.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT(z,n,_) BOOST_PP_CAT(m_a,n) BOOST_PP_LPAREN() BOOST_PP_CAT(a,n) BOOST_PP_RPAREN()
+#define BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL(z,n,_) BOOST_PP_CAT(A,n) const& BOOST_PP_CAT(m_a,n);
+
+#define BOOST_MAX_INPLACE_FACTORY_ARITY 10
+
+#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP
+
+#endif
+
diff --git a/3rdParty/Boost/src/boost/utility/detail/in_place_factory_suffix.hpp b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_suffix.hpp
new file mode 100644
index 0000000..58f48c7
--- /dev/null
+++ b/3rdParty/Boost/src/boost/utility/detail/in_place_factory_suffix.hpp
@@ -0,0 +1,23 @@
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2007, Tobias Schwinger.
+//
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP
+#define BOOST_UTILITY_DETAIL_INPLACE_FACTORY_SUFFIX_04APR2007_HPP
+
+#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT
+#undef BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL
+#undef BOOST_MAX_INPLACE_FACTORY_ARITY
+
+#undef BOOST_UTILITY_DETAIL_INPLACE_FACTORY_PREFIX_04APR2007_HPP
+
+#endif
+
diff --git a/3rdParty/Boost/src/boost/utility/in_place_factory.hpp b/3rdParty/Boost/src/boost/utility/in_place_factory.hpp
new file mode 100644
index 0000000..f84b003
--- /dev/null
+++ b/3rdParty/Boost/src/boost/utility/in_place_factory.hpp
@@ -0,0 +1,88 @@
+// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
+// Copyright (C) 2007, Tobias Schwinger.
+//
+// Use, modification, and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/optional for documentation.
+//
+// You are welcome to contact the author at:
+// fernando_cacciola@hotmail.com
+//
+#ifndef BOOST_UTILITY_INPLACE_FACTORY_04APR2007_HPP
+#ifndef BOOST_PP_IS_ITERATING
+
+#include <boost/utility/detail/in_place_factory_prefix.hpp>
+
+namespace boost {
+
+class in_place_factory_base {} ;
+
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_MAX_INPLACE_FACTORY_ARITY)
+#define BOOST_PP_FILENAME_1 <boost/utility/in_place_factory.hpp>
+#include BOOST_PP_ITERATE()
+
+} // namespace boost
+
+#include <boost/utility/detail/in_place_factory_suffix.hpp>
+
+#define BOOST_UTILITY_INPLACE_FACTORY_04APR2007_HPP
+#else
+#define N BOOST_PP_ITERATION()
+
+#if N
+template< BOOST_PP_ENUM_PARAMS(N, class A) >
+#endif
+class BOOST_PP_CAT(in_place_factory,N)
+ :
+ public in_place_factory_base
+{
+public:
+
+ explicit BOOST_PP_CAT(in_place_factory,N)
+ ( BOOST_PP_ENUM_BINARY_PARAMS(N,A,const& a) )
+#if N > 0
+ : BOOST_PP_ENUM(N, BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_INIT, _)
+#endif
+ {}
+
+ template<class T>
+ void* apply(void* address
+ BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) const
+ {
+ return new(address) T( BOOST_PP_ENUM_PARAMS(N, m_a) );
+ }
+
+ template<class T>
+ void* apply(void* address, std::size_t n
+ BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(T)) const
+ {
+ for(char* next = address = this->BOOST_NESTED_TEMPLATE apply<T>(address);
+ !! --n;)
+ this->BOOST_NESTED_TEMPLATE apply<T>(next = next+sizeof(T));
+ return address;
+ }
+
+ BOOST_PP_REPEAT(N, BOOST_DEFINE_INPLACE_FACTORY_CLASS_MEMBER_DECL, _)
+};
+
+#if N > 0
+template< BOOST_PP_ENUM_PARAMS(N, class A) >
+inline BOOST_PP_CAT(in_place_factory,N)< BOOST_PP_ENUM_PARAMS(N, A) >
+in_place( BOOST_PP_ENUM_BINARY_PARAMS(N, A, const& a) )
+{
+ return BOOST_PP_CAT(in_place_factory,N)< BOOST_PP_ENUM_PARAMS(N, A) >
+ ( BOOST_PP_ENUM_PARAMS(N, a) );
+}
+#else
+inline in_place_factory0 in_place()
+{
+ return in_place_factory0();
+}
+#endif
+
+#undef N
+#endif
+#endif
+
diff --git a/3rdParty/Boost/src/boost/utility/value_init.hpp b/3rdParty/Boost/src/boost/utility/value_init.hpp
deleted file mode 100644
index 5de9585..0000000
--- a/3rdParty/Boost/src/boost/utility/value_init.hpp
+++ /dev/null
@@ -1,258 +0,0 @@
-// (C) Copyright 2002-2008, Fernando Luis Cacciola Carballal.
-//
-// 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)
-//
-// 21 Ago 2002 (Created) Fernando Cacciola
-// 24 Dec 2007 (Refactored and worked around various compiler bugs) Fernando Cacciola, Niels Dekker
-// 23 May 2008 (Fixed operator= const issue, added initialized_value) Niels Dekker, Fernando Cacciola
-// 21 Ago 2008 (Added swap) Niels Dekker, Fernando Cacciola
-// 20 Feb 2009 (Fixed logical const-ness issues) Niels Dekker, Fernando Cacciola
-// 03 Apr 2010 (Added initialized<T>, suggested by Jeffrey Hellrung, fixing #3472) Niels Dekker
-// 30 May 2010 (Made memset call conditional, fixing #3869) Niels Dekker
-//
-#ifndef BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
-#define BOOST_UTILITY_VALUE_INIT_21AGO2002_HPP
-
-// Note: The implementation of boost::value_initialized had to deal with the
-// fact that various compilers haven't fully implemented value-initialization.
-// The constructor of boost::value_initialized<T> works around these compiler
-// issues, by clearing the bytes of T, before constructing the T object it
-// contains. More details on these issues are at libs/utility/value_init.htm
-
-#include <boost/aligned_storage.hpp>
-#include <boost/config.hpp> // For BOOST_NO_COMPLETE_VALUE_INITIALIZATION.
-#include <boost/detail/workaround.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/cv_traits.hpp>
-#include <boost/type_traits/alignment_of.hpp>
-#include <boost/swap.hpp>
-#include <cstring>
-#include <new>
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#if _MSC_VER >= 1310
-// It is safe to ignore the following warning from MSVC 7.1 or higher:
-// "warning C4351: new behavior: elements of array will be default initialized"
-#pragma warning(disable: 4351)
-// It is safe to ignore the following MSVC warning, which may pop up when T is
-// a const type: "warning C4512: assignment operator could not be generated".
-#pragma warning(disable: 4512)
-#endif
-#endif
-
-#ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
- // Implementation detail: The macro BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED
- // suggests that a workaround should be applied, because of compiler issues
- // regarding value-initialization.
- #define BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED
-#endif
-
-// Implementation detail: The macro BOOST_DETAIL_VALUE_INIT_WORKAROUND
-// switches the value-initialization workaround either on or off.
-#ifndef BOOST_DETAIL_VALUE_INIT_WORKAROUND
- #ifdef BOOST_DETAIL_VALUE_INIT_WORKAROUND_SUGGESTED
- #define BOOST_DETAIL_VALUE_INIT_WORKAROUND 1
- #else
- #define BOOST_DETAIL_VALUE_INIT_WORKAROUND 0
- #endif
-#endif
-
-namespace boost {
-
-template<class T>
-class initialized
-{
- private :
- struct wrapper
- {
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
- typename
-#endif
- remove_const<T>::type data;
-
- wrapper()
- :
- data()
- {
- }
-
- wrapper(T const & arg)
- :
- data(arg)
- {
- }
- };
-
- mutable
-#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x592))
- typename
-#endif
- aligned_storage<sizeof(wrapper), alignment_of<wrapper>::value>::type x;
-
- wrapper * wrapper_address() const
- {
- return static_cast<wrapper *>( static_cast<void*>(&x));
- }
-
- public :
-
- initialized()
- {
-#if BOOST_DETAIL_VALUE_INIT_WORKAROUND
- std::memset(&x, 0, sizeof(x));
-#endif
- new (wrapper_address()) wrapper();
- }
-
- initialized(initialized const & arg)
- {
- new (wrapper_address()) wrapper( static_cast<wrapper const &>(*(arg.wrapper_address())));
- }
-
- explicit initialized(T const & arg)
- {
- new (wrapper_address()) wrapper(arg);
- }
-
- initialized & operator=(initialized const & arg)
- {
- // Assignment is only allowed when T is non-const.
- BOOST_STATIC_ASSERT( ! is_const<T>::value );
- *wrapper_address() = static_cast<wrapper const &>(*(arg.wrapper_address()));
- return *this;
- }
-
- ~initialized()
- {
- wrapper_address()->wrapper::~wrapper();
- }
-
- T const & data() const
- {
- return wrapper_address()->data;
- }
-
- T& data()
- {
- return wrapper_address()->data;
- }
-
- void swap(initialized & arg)
- {
- ::boost::swap( this->data(), arg.data() );
- }
-
- operator T const &() const
- {
- return wrapper_address()->data;
- }
-
- operator T&()
- {
- return wrapper_address()->data;
- }
-
-} ;
-
-template<class T>
-T const& get ( initialized<T> const& x )
-{
- return x.data() ;
-}
-
-template<class T>
-T& get ( initialized<T>& x )
-{
- return x.data() ;
-}
-
-template<class T>
-void swap ( initialized<T> & lhs, initialized<T> & rhs )
-{
- lhs.swap(rhs) ;
-}
-
-template<class T>
-class value_initialized
-{
- private :
-
- // initialized<T> does value-initialization by default.
- initialized<T> m_data;
-
- public :
-
- value_initialized()
- :
- m_data()
- { }
-
- T const & data() const
- {
- return m_data.data();
- }
-
- T& data()
- {
- return m_data.data();
- }
-
- void swap(value_initialized & arg)
- {
- m_data.swap(arg.m_data);
- }
-
- operator T const &() const
- {
- return m_data;
- }
-
- operator T&()
- {
- return m_data;
- }
-} ;
-
-
-template<class T>
-T const& get ( value_initialized<T> const& x )
-{
- return x.data() ;
-}
-
-template<class T>
-T& get ( value_initialized<T>& x )
-{
- return x.data() ;
-}
-
-template<class T>
-void swap ( value_initialized<T> & lhs, value_initialized<T> & rhs )
-{
- lhs.swap(rhs) ;
-}
-
-
-class initialized_value_t
-{
- public :
-
- template <class T> operator T() const
- {
- return initialized<T>().data();
- }
-};
-
-initialized_value_t const initialized_value = {} ;
-
-
-} // namespace boost
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/3rdParty/Boost/src/boost/version.hpp b/3rdParty/Boost/src/boost/version.hpp
index bdb68d4..c80d428 100644
--- a/3rdParty/Boost/src/boost/version.hpp
+++ b/3rdParty/Boost/src/boost/version.hpp
@@ -19,7 +19,7 @@
// BOOST_VERSION / 100 % 1000 is the minor version
// BOOST_VERSION / 100000 is the major version
-#define BOOST_VERSION 104500
+#define BOOST_VERSION 104601
//
// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
@@ -27,7 +27,7 @@
// number, y is the minor version number, and z is the patch level if not 0.
// This is used by <config/auto_link.hpp> to select which library version to link to.
-#define BOOST_LIB_VERSION "1_45"
+#define BOOST_LIB_VERSION "1_46_1"
#endif
diff --git a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp
index 10df199..f29153c 100644
--- a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp
+++ b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_operations.cpp
@@ -44,7 +44,7 @@
#include <boost/filesystem/v2/operations.hpp>
#include <boost/scoped_array.hpp>
-#include <boost/throw_exception.hpp>
+#include <boost/assert.hpp>
#include <boost/detail/workaround.hpp>
#include <cstdlib> // for malloc, free
@@ -93,7 +93,6 @@ using boost::system::system_category;
#include <cstring>
#include <cstdio> // for remove, rename
#include <cerrno>
-#include <cassert>
// #include <iostream> // for debugging only; comment out when not in use
#ifdef BOOST_NO_STDC_NAMESPACE
@@ -294,7 +293,7 @@ namespace
if ( p1.handle != INVALID_HANDLE_VALUE
|| p2.handle != INVALID_HANDLE_VALUE )
{ return std::make_pair( ok, false ); }
- assert( p1.handle == INVALID_HANDLE_VALUE
+ BOOST_ASSERT( p1.handle == INVALID_HANDLE_VALUE
&& p2.handle == INVALID_HANDLE_VALUE );
{ return std::make_pair( error_code( error1, system_category()), false ); }
}
@@ -724,7 +723,7 @@ namespace boost
|| ((mode&~std::ios_base::binary)
== (std::ios_base::in|std::ios_base::out|std::ios_base::trunc)) )
disposition = CREATE_ALWAYS;
- else assert( 0 && "invalid mode argument" );
+ else BOOST_ASSERT( 0 && "invalid mode argument" );
HANDLE handle ( ::CreateFileW( ph.c_str(), access,
FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, 0,
@@ -1215,8 +1214,9 @@ namespace boost
if ( ::stat( from_file_ph.c_str(), &from_stat ) != 0 )
{ return error_code( errno, system_category() ); }
- int oflag = O_CREAT | O_WRONLY;
- if ( fail_if_exists ) oflag |= O_EXCL;
+ int oflag = O_CREAT | O_WRONLY | O_TRUNC;
+ if ( fail_if_exists )
+ oflag |= O_EXCL;
if ( (outfile = ::open( to_file_ph.c_str(), oflag, from_stat.st_mode )) < 0 )
{
int open_errno = errno;
diff --git a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp
index 7adeaff..16f6583 100644
--- a/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp
+++ b/3rdParty/Boost/src/libs/filesystem/v2/src/v2_path.cpp
@@ -86,7 +86,7 @@ namespace boost
void wpath_traits::imbue( const std::locale & new_loc )
{
- if ( locked ) boost::throw_exception(
+ if ( locked ) BOOST_FILESYSTEM_THROW(
wfilesystem_error(
"boost::filesystem::wpath_traits::imbue() after lockdown",
make_error_code( system::errc::not_supported ) ) );
@@ -144,7 +144,7 @@ namespace boost
if ( converter()->out(
state, src.c_str(), src.c_str()+src.size(), from_next, work.get(),
work.get()+work_size, to_next ) != std::codecvt_base::ok )
- boost::throw_exception( boost::filesystem::wfilesystem_error(
+ BOOST_FILESYSTEM_THROW( boost::filesystem::wfilesystem_error(
"boost::filesystem::wpath::to_external conversion error",
ph, system::error_code( system::errc::invalid_argument, system::system_category() ) ) );
*to_next = '\0';
@@ -163,7 +163,7 @@ namespace boost
if ( converter()->in(
state, src.c_str(), src.c_str()+src.size(), from_next, work.get(),
work.get()+work_size, to_next ) != std::codecvt_base::ok )
- boost::throw_exception( boost::filesystem::wfilesystem_error(
+ BOOST_FILESYSTEM_THROW( boost::filesystem::wfilesystem_error(
"boost::filesystem::wpath::to_internal conversion error",
system::error_code( system::errc::invalid_argument, system::system_category() ) ) );
*to_next = L'\0';
diff --git a/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp b/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp
index 04d9c17..2460c1d 100644
--- a/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp
+++ b/3rdParty/Boost/src/libs/filesystem/v3/src/operations.cpp
@@ -34,6 +34,7 @@
!defined(_STATVFS_ACPP_PROBLEMS_FIXED))
#define _FILE_OFFSET_BITS 64 // at worst, these defines may have no effect,
#endif
+#if !defined(__PGI)
#define __USE_FILE_OFFSET64 // but that is harmless on Windows and on POSIX
// 64-bit systems or on 32-bit systems which don't have files larger
// than can be represented by a traditional POSIX/UNIX off_t type.
@@ -44,11 +45,15 @@
// ensure that they are available to all included headers.
// That is required at least on Solaris, and possibly on other
// systems as well.
+#else
+#define _FILE_OFFSET_BITS 64
+#endif
#include <boost/filesystem/v3/operations.hpp>
#include <boost/scoped_array.hpp>
#include <boost/detail/workaround.hpp>
#include <cstdlib> // for malloc, free
+#include <vector>
#ifdef BOOST_FILEYSTEM_INCLUDE_IOSTREAM
# include <iostream>
@@ -147,6 +152,9 @@ typedef struct _REPARSE_DATA_BUFFER {
#define REPARSE_DATA_BUFFER_HEADER_SIZE \
FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)
+#endif
+
+#ifndef MAXIMUM_REPARSE_DATA_BUFFER_SIZE
#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE ( 16 * 1024 )
#endif
@@ -426,8 +434,9 @@ namespace
if (::stat(from_p.c_str(), &from_stat)!= 0)
{ return false; }
- int oflag = O_CREAT | O_WRONLY;
- if (fail_if_exists)oflag |= O_EXCL;
+ int oflag = O_CREAT | O_WRONLY | O_TRUNC;
+ if (fail_if_exists)
+ oflag |= O_EXCL;
if ((outfile = ::open(to_p.c_str(), oflag, from_stat.st_mode))< 0)
{
int open_errno = errno;
@@ -1443,6 +1452,9 @@ namespace detail
{
return process_status_failure(p, ec);
}
+
+ if (!is_reparse_point_a_symlink(p))
+ return file_status(reparse_file);
}
if (ec != 0) ec->clear();
@@ -1512,6 +1524,55 @@ namespace detail
# endif
}
+ // contributed by Jeff Flinn
+ BOOST_FILESYSTEM_DECL
+ path temp_directory_path(system::error_code* ec)
+ {
+# ifdef BOOST_POSIX_API
+ const char* val = 0;
+
+ (val = std::getenv("TMPDIR" )) ||
+ (val = std::getenv("TMP" )) ||
+ (val = std::getenv("TEMP" )) ||
+ (val = std::getenv("TEMPDIR"));
+
+ path p((val!=0) ? val : "/tmp");
+
+ if (p.empty() || (ec&&!is_directory(p, *ec))||(!ec&&!is_directory(p)))
+ {
+ errno = ENOTDIR;
+ error(true, p, ec, "boost::filesystem::temp_directory_path");
+ return p;
+ }
+
+ return p;
+
+# else // Windows
+
+ std::vector<path::value_type> buf(GetTempPathW(0, NULL));
+
+ if (buf.empty() || GetTempPathW(buf.size(), &buf[0])==0)
+ {
+ if(!buf.empty()) ::SetLastError(ENOTDIR);
+ error(true, ec, "boost::filesystem::temp_directory_path");
+ return path();
+ }
+
+ buf.pop_back();
+
+ path p(buf.begin(), buf.end());
+
+ if ((ec&&!is_directory(p, *ec))||(!ec&&!is_directory(p)))
+ {
+ ::SetLastError(ENOTDIR);
+ error(true, p, ec, "boost::filesystem::temp_directory_path");
+ return path();
+ }
+
+ return p;
+# endif
+ }
+
BOOST_FILESYSTEM_DECL
path system_complete(const path& p, system::error_code* ec)
{
@@ -1637,6 +1698,10 @@ namespace
return ok;
}
+#if defined(__PGI) && defined(__USE_FILE_OFFSET64)
+#define dirent dirent64
+#endif
+
error_code dir_itr_first(void *& handle, void *& buffer,
const char* dir, string& target,
fs::file_status &, fs::file_status &)
@@ -1742,9 +1807,13 @@ namespace
? 0 : ::GetLastError(), system_category() );
}
target = data.cFileName;
- if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
- { sf.type(fs::directory_file); symlink_sf.type(fs::directory_file); }
- else { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); }
+ if (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
+ // reparse points are complex, so don't try to handle them here
+ { sf.type(fs::status_error); symlink_sf.type(fs::status_error); }
+ else if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ { sf.type(fs::directory_file); symlink_sf.type(fs::directory_file); }
+ else
+ { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); }
return error_code();
}
@@ -1759,9 +1828,13 @@ namespace
return error_code(error == ERROR_NO_MORE_FILES ? 0 : error, system_category());
}
target = data.cFileName;
- if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ if (data.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
+ // reparse points are complex, so don't try to handle them here
+ { sf.type(fs::status_error); symlink_sf.type(fs::status_error); }
+ else if (data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{ sf.type(fs::directory_file); symlink_sf.type(fs::directory_file); }
- else { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); }
+ else
+ { sf.type(fs::regular_file); symlink_sf.type(fs::regular_file); }
return error_code();
}
#endif
@@ -1878,7 +1951,12 @@ namespace detail
}
else if (ec != 0) ec->clear();
- if (it.m_imp->handle == 0){ it.m_imp.reset(); return; } // eof, make end
+ if (it.m_imp->handle == 0) // eof, make end
+ {
+ it.m_imp.reset();
+ return;
+ }
+
if (!(filename[0] == dot // !(dot or dot-dot)
&& (filename.size()== 1
|| (filename[1] == dot
diff --git a/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp b/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp
index 53a4cc6..cc30570 100644
--- a/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp
+++ b/3rdParty/Boost/src/libs/filesystem/v3/src/path.cpp
@@ -27,6 +27,7 @@
#include <boost/scoped_array.hpp>
#include <boost/system/error_code.hpp>
#include <boost/assert.hpp>
+#include <algorithm>
#include <cstddef>
#include <cstring>
#include <cassert>
@@ -155,27 +156,17 @@ namespace filesystem3
# ifdef BOOST_WINDOWS_API
- void path::m_portable()
- {
- for (string_type::iterator it = m_pathname.begin();
- it != m_pathname.end(); ++it)
- {
- if (*it == L'\\')
- *it = L'/';
- }
- }
-
const std::string path::generic_string(const codecvt_type& cvt) const
{
path tmp(*this);
- tmp.m_portable();
+ tmp.make_preferred();
return tmp.string(cvt);
}
const std::wstring path::generic_wstring() const
{
path tmp(*this);
- tmp.m_portable();
+ tmp.make_preferred();
return tmp.wstring();
}
@@ -216,12 +207,7 @@ namespace filesystem3
# ifdef BOOST_WINDOWS_API
path & path::make_preferred()
{
- for (string_type::iterator it = m_pathname.begin();
- it != m_pathname.end(); ++it)
- {
- if (*it == L'/')
- *it = L'\\';
- }
+ std::replace(m_pathname.begin(), m_pathname.end(), L'\\', L'/');
return *this;
}
# endif
diff --git a/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp b/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp
index dd89c02..ae9f9f2 100644
--- a/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp
+++ b/3rdParty/Boost/src/libs/filesystem/v3/src/windows_file_codecvt.cpp
@@ -31,7 +31,11 @@
#include "windows_file_codecvt.hpp"
-#define WINVER 0x0500 // MinGW for GCC 4.4 requires this
+// Versions of MinGW prior to GCC 4.6 requires this
+#ifndef WINVER
+# define WINVER 0x0500
+#endif
+
#include <windows.h>
std::codecvt_base::result windows_file_codecvt::do_in(
diff --git a/3rdParty/Boost/src/libs/regex/src/regex.cpp b/3rdParty/Boost/src/libs/regex/src/regex.cpp
index 1f1caa6..27ac43c 100644
--- a/3rdParty/Boost/src/libs/regex/src/regex.cpp
+++ b/3rdParty/Boost/src/libs/regex/src/regex.cpp
@@ -224,19 +224,3 @@ int WINAPI DllEntryPoint(HINSTANCE , unsigned long , void*)
}
#endif
-#if defined(__IBMCPP__) && defined(BOOST_REGEX_DYN_LINK)
-//
-// Is this correct - linker complains without it ?
-//
-int main()
-{
- return 0;
-}
-
-#endif
-
-
-
-
-
-
diff --git a/3rdParty/Boost/src/libs/system/src/error_code.cpp b/3rdParty/Boost/src/libs/system/src/error_code.cpp
index bd87403..bcdbea9 100644
--- a/3rdParty/Boost/src/libs/system/src/error_code.cpp
+++ b/3rdParty/Boost/src/libs/system/src/error_code.cpp
@@ -39,6 +39,9 @@ using namespace boost::system::errc;
namespace
{
+#if defined(__PGI)
+ using boost::system::errc::invalid_argument;
+#endif
// standard error categories ---------------------------------------------//
class generic_error_category : public error_category
diff --git a/3rdParty/Boost/src/tools/bcp/add_path.cpp b/3rdParty/Boost/src/tools/bcp/add_path.cpp
index e55e8e3..2ed4a94 100644
--- a/3rdParty/Boost/src/tools/bcp/add_path.cpp
+++ b/3rdParty/Boost/src/tools/bcp/add_path.cpp
@@ -68,7 +68,7 @@ void bcp_implementation::add_directory(const fs::path& p)
// we need to convert *i back into
// a relative path, what follows is a hack:
//
- std::string s(i->string());
+ std::string s(i->path().string());
if(m_boost_path.string().size())
s.erase(0, m_boost_path.string().size() + 1);
fs::path np = s;
diff --git a/3rdParty/Boost/src/tools/bcp/bcp.hpp b/3rdParty/Boost/src/tools/bcp/bcp.hpp
index ea2b4d0..bec6364 100644
--- a/3rdParty/Boost/src/tools/bcp/bcp.hpp
+++ b/3rdParty/Boost/src/tools/bcp/bcp.hpp
@@ -9,6 +9,12 @@
#include <boost/shared_ptr.hpp>
+#if defined(BOOST_FILESYSTEM_VERSION) && (BOOST_FILESYSTEM_VERSION != 3)
+# error "This library must be built with Boost.Filesystem version 3"
+#else
+#define BOOST_FILESYSTEM_VERSION 3
+#endif
+
class bcp_application;
typedef boost::shared_ptr<bcp_application> pbcp_application;
diff --git a/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp b/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp
index c5d7fb4..5801735 100644
--- a/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp
+++ b/3rdParty/Boost/src/tools/bcp/bcp_imp.cpp
@@ -81,7 +81,7 @@ void bcp_implementation::enable_unix_lines()
void bcp_implementation::set_boost_path(const char* p)
{
// Hack to strip trailing slashes from the path
- m_boost_path = (fs::path(p, fs::native) / "boost").parent_path();
+ m_boost_path = (fs::path(p) / "boost").parent_path();
fs::path check = m_boost_path / "boost" / "version.hpp";
if(!fs::exists(check))
{
@@ -94,7 +94,7 @@ void bcp_implementation::set_boost_path(const char* p)
void bcp_implementation::set_destination(const char* p)
{
- m_dest_path = fs::path(p, fs::native);
+ m_dest_path = fs::path(p);
}
void bcp_implementation::add_module(const char* p)
@@ -140,7 +140,7 @@ int bcp_implementation::run()
if(!m_list_mode && !m_license_mode && !fs::exists(m_dest_path))
{
std::string msg("Destination path does not exist: ");
- msg.append(m_dest_path.native_file_string());
+ msg.append(m_dest_path.string());
std::runtime_error e(msg);
boost::throw_exception(e);
}
@@ -190,15 +190,8 @@ int bcp_implementation::run()
//
fs::path module;
fs::path exmodule;
- try{
- module = fs::path(*i);
- exmodule = fs::path(*i + ".hpp");
- }
- catch(...)
- {
- module = fs::path(*i, fs::native);
- exmodule = fs::path(*i + ".hpp", fs::native);
- }
+ module = fs::path(*i);
+ exmodule = fs::path(*i + ".hpp");
if(m_scan_mode)
{
diff --git a/3rdParty/Boost/src/tools/bcp/copy_path.cpp b/3rdParty/Boost/src/tools/bcp/copy_path.cpp
index 496696a..85b5de1 100644
--- a/3rdParty/Boost/src/tools/bcp/copy_path.cpp
+++ b/3rdParty/Boost/src/tools/bcp/copy_path.cpp
@@ -63,7 +63,7 @@ void bcp_implementation::copy_path(const fs::path& p)
static std::vector<char> v1, v2;
v1.clear();
v2.clear();
- std::ifstream is((m_boost_path / p).native_file_string().c_str());
+ std::ifstream is((m_boost_path / p).string().c_str());
std::copy(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), std::back_inserter(v1));
static boost::regex libname_matcher;
@@ -78,9 +78,9 @@ void bcp_implementation::copy_path(const fs::path& p)
std::ofstream os;
if(m_unix_lines)
- os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out);
+ os.open((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out);
else
- os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::out);
+ os.open((m_dest_path / p).string().c_str(), std::ios_base::out);
os.write(&*v1.begin(), v1.size());
os.close();
}
@@ -89,7 +89,7 @@ void bcp_implementation::copy_path(const fs::path& p)
static std::vector<char> v1, v2;
v1.clear();
v2.clear();
- std::ifstream is((m_boost_path / p).native_file_string().c_str());
+ std::ifstream is((m_boost_path / p).string().c_str());
std::copy(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), std::back_inserter(v1));
static boost::regex libname_matcher;
@@ -111,9 +111,9 @@ void bcp_implementation::copy_path(const fs::path& p)
std::ofstream os;
if(m_unix_lines)
- os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out);
+ os.open((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out);
else
- os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::out);
+ os.open((m_dest_path / p).string().c_str(), std::ios_base::out);
os.write(&*v1.begin(), v1.size());
os.close();
}
@@ -127,7 +127,7 @@ void bcp_implementation::copy_path(const fs::path& p)
static std::vector<char> v1, v2;
v1.clear();
v2.clear();
- std::ifstream is((m_boost_path / p).native_file_string().c_str());
+ std::ifstream is((m_boost_path / p).string().c_str());
std::copy(std::istreambuf_iterator<char>(is), std::istreambuf_iterator<char>(), std::back_inserter(v1));
static const boost::regex namespace_matcher(
@@ -202,20 +202,20 @@ void bcp_implementation::copy_path(const fs::path& p)
std::ofstream os;
if(m_unix_lines)
- os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out);
+ os.open((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out);
else
- os.open((m_dest_path / p).native_file_string().c_str(), std::ios_base::out);
+ os.open((m_dest_path / p).string().c_str(), std::ios_base::out);
if(v1.size())
os.write(&*v1.begin(), v1.size());
os.close();
}
else if(m_unix_lines && !is_binary_file(p))
{
- std::ifstream is((m_boost_path / p).native_file_string().c_str());
+ std::ifstream is((m_boost_path / p).string().c_str());
std::istreambuf_iterator<char> isi(is);
std::istreambuf_iterator<char> end;
- std::ofstream os((m_dest_path / p).native_file_string().c_str(), std::ios_base::binary | std::ios_base::out);
+ std::ofstream os((m_dest_path / p).string().c_str(), std::ios_base::binary | std::ios_base::out);
std::ostreambuf_iterator<char> osi(os);
std::copy(isi, end, osi);
diff --git a/3rdParty/Boost/src/tools/bcp/file_types.cpp b/3rdParty/Boost/src/tools/bcp/file_types.cpp
index abc0149..7fc6850 100644
--- a/3rdParty/Boost/src/tools/bcp/file_types.cpp
+++ b/3rdParty/Boost/src/tools/bcp/file_types.cpp
@@ -23,7 +23,7 @@ bool bcp_implementation::is_source_file(const fs::path& p)
")",
boost::regex::perl | boost::regex::icase
);
- return boost::regex_match(p.filename(), e);
+ return boost::regex_match(p.filename().string(), e);
}
bool bcp_implementation::is_html_file(const fs::path& p)
@@ -34,7 +34,7 @@ bool bcp_implementation::is_html_file(const fs::path& p)
"html?|css"
")"
);
- return boost::regex_match(p.filename(), e);
+ return boost::regex_match(p.filename().string(), e);
}
bool bcp_implementation::is_binary_file(const fs::path& p)
@@ -52,7 +52,7 @@ bool bcp_implementation::is_binary_file(const fs::path& p)
"|"
"(Jamfile|makefile|configure)",
boost::regex::perl | boost::regex::icase);
- return !boost::regex_match(p.leaf(), e);
+ return !boost::regex_match(p.leaf().string(), e);
}
@@ -67,6 +67,6 @@ bool bcp_implementation::is_jam_file(const fs::path& p)
"(Jamfile|Jamroot)\\.?",
boost::regex::perl | boost::regex::icase
);
- return boost::regex_match(p.filename(), e);
+ return boost::regex_match(p.filename().string(), e);
}
diff --git a/3rdParty/Boost/src/tools/bcp/fileview.cpp b/3rdParty/Boost/src/tools/bcp/fileview.cpp
index 845582d..ec9e71a 100644
--- a/3rdParty/Boost/src/tools/bcp/fileview.cpp
+++ b/3rdParty/Boost/src/tools/bcp/fileview.cpp
@@ -57,11 +57,11 @@ void fileview::close()
void fileview::open(const boost::filesystem::path& p)
{
cow();
- std::ifstream is(p.native_file_string().c_str());
+ std::ifstream is(p.string().c_str());
if(!is)
{
std::string msg("Bad file name: ");
- msg += p.native_file_string();
+ msg += p.string();
std::runtime_error e(msg);
boost::throw_exception(e);
}
diff --git a/3rdParty/Boost/src/tools/bcp/fileview.hpp b/3rdParty/Boost/src/tools/bcp/fileview.hpp
index ede4232..fe76f84 100644
--- a/3rdParty/Boost/src/tools/bcp/fileview.hpp
+++ b/3rdParty/Boost/src/tools/bcp/fileview.hpp
@@ -7,6 +7,12 @@
*
*/
+#if defined(BOOST_FILESYSTEM_VERSION) && (BOOST_FILESYSTEM_VERSION != 3)
+# error "This library must be built with Boost.Filesystem version 3"
+#else
+#define BOOST_FILESYSTEM_VERSION 3
+#endif
+
#include <boost/shared_ptr.hpp>
#include <boost/filesystem/path.hpp>
diff --git a/3rdParty/Boost/src/tools/bcp/main.cpp b/3rdParty/Boost/src/tools/bcp/main.cpp
index a152138..28a5491 100644
--- a/3rdParty/Boost/src/tools/bcp/main.cpp
+++ b/3rdParty/Boost/src/tools/bcp/main.cpp
@@ -13,9 +13,9 @@
#include <cstring>
#include <string>
#include <list>
+#include "bcp.hpp"
#include <boost/filesystem/path.hpp>
#include <boost/version.hpp>
-#include "bcp.hpp"
#ifdef BOOST_NO_STDC_NAMESPACE
namespace std{
@@ -60,7 +60,7 @@ int cpp_main(int argc, char* argv[])
// with files that already exist, if they're not portable
// names it's too late for us to do anything about it).
//
- boost::filesystem::path::default_name_check(filesystem_name_check);
+ /*boost::filesystem::path::default_name_check(filesystem_name_check);*/
//
// without arguments just show help:
//
@@ -68,7 +68,7 @@ int cpp_main(int argc, char* argv[])
{
std::cout << "Error: insufficient arguments, don't know what to do." << std::endl;
show_usage();
- return 0;
+ return 1;
}
//
// create the application object:
diff --git a/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp b/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp
index 26eae7b..2349acc 100644
--- a/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp
+++ b/3rdParty/Boost/src/tools/bcp/output_licence_info.cpp
@@ -57,7 +57,7 @@ void bcp_implementation::output_license_info()
i = m_license_data.begin();
j = m_license_data.end();
- std::ofstream os(m_dest_path.native_file_string().c_str());
+ std::ofstream os(m_dest_path.string().c_str());
if(!os)
{
std::string msg("Error opening ");
diff --git a/3rdParty/Boost/src/tools/bcp/scan_licence.cpp b/3rdParty/Boost/src/tools/bcp/scan_licence.cpp
index 13a0286..d1bf0bb 100644
--- a/3rdParty/Boost/src/tools/bcp/scan_licence.cpp
+++ b/3rdParty/Boost/src/tools/bcp/scan_licence.cpp
@@ -239,10 +239,10 @@ void bcp_implementation::scan_license(const fs::path& p, const fileview& v)
// Perform the actual conversion
if (m_bsl_convert_mode) {
try{
- std::ofstream out((m_boost_path / p).native_file_string().c_str());
+ std::ofstream out((m_boost_path / p).string().c_str());
if (!out) {
std::string msg("Cannot open file for license conversion: ");
- msg += p.native_file_string();
+ msg += p.string();
std::runtime_error e(msg);
boost::throw_exception(e);
}